当前位置: 首页 > news >正文

Unity-UV展开工具

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;public class unfold : EditorWindow
{[MenuItem("Gq_Tools/展开")]public static void ShowWin(){EditorWindow.CreateInstance<unfold>().Show();}private void OnGUI(){GUILayout.Space(10);GUILayout.BeginHorizontal("box");GUILayout.Space(10);if (GUILayout.Button("Planar-X 展开"))//UI上画一个按钮{//MonoBehaviour.print("do");Unfold0("X");}if (GUILayout.Button("Planar-Y 展开"))//UI上画一个按钮{//MonoBehaviour.print("do");Unfold0("Y");}if (GUILayout.Button("Planar-Z 展开"))//UI上画一个按钮{//MonoBehaviour.print("do");Unfold0("Z");}GUILayout.EndHorizontal();GUILayout.Space(10);GUILayout.BeginHorizontal("box");if (GUILayout.Button("立方展开"))//UI上画一个按钮{//MonoBehaviour.print("do");Unfold1();}GUILayout.EndHorizontal();GUILayout.Space(10);GUILayout.BeginHorizontal("box");if (GUILayout.Button("通过光图UV展开"))//UI上画一个按钮  {//MonoBehaviour.print("do");Unfold2();}GUILayout.EndHorizontal();}//Planar Unfoldvoid Unfold0(string inStr){var objs = Selection.objects;if (inStr == "X"){foreach (var obj in objs)//for每个选中的物体{var go = obj as GameObject;Mesh mesh = go.GetComponent<MeshFilter>().sharedMesh;Vector3[] vertices = mesh.vertices;Vector2[] uvs = new Vector2[vertices.Length];//Planar Unfoldfor (int i = 0; i < uvs.Length; i++){uvs[i] = new Vector2(vertices[i].y, vertices[i].z);}mesh.uv = uvs;}}if (inStr == "Y"){foreach (var obj in objs)//for每个选中的物体  {var go = obj as GameObject;Mesh mesh = go.GetComponent<MeshFilter>().sharedMesh;Vector3[] vertices = mesh.vertices;Vector2[] uvs = new Vector2[vertices.Length];//Planar Unfoldfor (int i = 0; i < uvs.Length; i++){uvs[i] = new Vector2(vertices[i].x, vertices[i].z);}mesh.uv = uvs;}}if (inStr == "Z"){foreach (var obj in objs)//for每个选中的物体{var go = obj as GameObject;Mesh mesh = go.GetComponent<MeshFilter>().sharedMesh;Vector3[] vertices = mesh.vertices;Vector2[] uvs = new Vector2[vertices.Length];//Planar Unfoldfor (int i = 0; i < uvs.Length; i++){uvs[i] = new Vector2(vertices[i].x, vertices[i].y);}mesh.uv = uvs;}}}//Cubic Unfoldvoid Unfold1(){var objs = Selection.objects;foreach (var obj in objs)//for每个选中的物体  {var go = obj as GameObject;Mesh mesh = go.GetComponent<MeshFilter>().sharedMesh;Vector3[] vertices = mesh.vertices;Vector2[] uvs = new Vector2[vertices.Length];Vector3[] normals = mesh.normals;//Cubic Unfoldfor (int i = 0; i < normals.Length; i++){//X-Planeif (Mathf.Abs(normals[i].x) > Mathf.Abs(normals[i].y) && Mathf.Abs(normals[i].x) > Mathf.Abs(normals[i].z)){uvs[i] = new Vector2(vertices[i].y, vertices[i].z);}//Y-Planeif (Mathf.Abs(normals[i].y) > Mathf.Abs(normals[i].x) && Mathf.Abs(normals[i].y) > Mathf.Abs(normals[i].z)){uvs[i] = new Vector2(vertices[i].x, vertices[i].z);}//Z-Planeif (Mathf.Abs(normals[i].z) > Mathf.Abs(normals[i].x) && Mathf.Abs(normals[i].z) > Mathf.Abs(normals[i].y)){uvs[i] = new Vector2(vertices[i].x, vertices[i].y);}}mesh.uv = uvs; }}//use lightmap UV  void Unfold2(){var objs = Selection.objects;foreach (var obj in objs)//对于每个选中的物体 // {var go = obj as GameObject;Mesh mesh = go.GetComponent<MeshFilter>().sharedMesh;mesh.uv = mesh.uv2;}}
}
http://www.lryc.cn/news/216916.html

相关文章:

  • springboot actuator jvm监控丢失
  • UDP服务端和客户端通信代码开发流程
  • 数据库实验:SQL的数据定义与单表查询
  • P3398 仓鼠找 sugar
  • C# 发送邮件
  • Zeal下载文档慢的问题
  • HR模块开发(1):简单的开发流程和注意事项
  • 创建Vue实例
  • 2024上海国际人工智能展(CSITF)以“技术,让生活更精彩”为核心理念,以“创新驱动发展,保护知识产权,促进技术贸易”为主题
  • Vue3使用Monaco-editor
  • java 根据ip获取到城市 GeoLite2-City.mmdb
  • kaggle使用说明
  • BUUCTF FLAG 1
  • 万物皆可“云” 从杭州云栖大会看数智生活的未来
  • LeetCode1518 换水问题
  • 强大日志查看器,助力数据联动分析
  • HIBS一些简介
  • OpenCV实现人脸关键点检测
  • 300万美元!澳大利亚昆士兰州投资当地首家量子公司AQC
  • Android Studio打包AAR
  • 【Python基础知识四】控制语句
  • Jmeter压测 —— 1秒发送1次请求
  • 目标检测YOLO实战应用案例100讲-基于改进YOLOv4算法的自动驾驶场景 目标检测
  • Spring Cloud智慧工地源码,利用计算机技术、互联网、物联网、云计算、大数据等新一代信息技术开发,微服务架构
  • AI视频 | Runway的史诗级更新真的那么震撼吗?来看我的试用体验!
  • 【动作模式识别】实现复合动作模式识别(离线控制模块)
  • Python基础学习009——类的封装
  • 前端开发和后端开发,你更倾向于哪一种?
  • Selenium 基本功能
  • 智能井盖传感器有哪些?万宾科技智能井盖效果