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;}}
}相关文章:
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();}priva…...
springboot actuator jvm监控丢失
1、背景 系统接入了监控prometheus和grafana,某天grafana突然发现只有几台机器可以看到指标。 随便点击一个地址http://192.168.0.76:8681/lms/actuator/prometheus访问指标,发现JVM相关指标全部丢失 2、解决方法 从网上查找相关资料,逐一…...
UDP服务端和客户端通信代码开发流程
一、UDP通信 TCP:传输控制协议,面向连接的,稳定的,可靠的,安全的数据集流传递 稳定和可靠:丢包重传 数据有序:序号和确认序号 流量控制:稳定窗口 UDP:用户数据报协议 面向无连接的,不稳定的,不可靠,不安…...
数据库实验:SQL的数据定义与单表查询
目录 实验目的实验内容实验要求实验过程实验步骤实例代码结果示意 数据库的实验,对关系型数据库MySQL进行一些实际的操作 实验目的 (1) 掌握DBMS的数据定义功能 (2) 掌握SQL语言的数据定义语句 (3) 掌握RDBMS的数据单表查询功能 (4) 掌握SQL语言的数据单表查询语句…...
P3398 仓鼠找 sugar
Portal. LCA。 询问树上两条路径是否有交点。 画图发现无非两种情况: 发现一条路径的起点和终点的 LCA 经过另一条路径,是两路径相交的充要条件。 考虑如何判断这个 LCA 在不在路径上。若 d ( s , LCA ) d ( LCA , t ) d ( s , t ) d(s,\text{LCA…...
C# 发送邮件
1.安装 NuGet 包 2.代码如下 SendMailUtil using MimeKit; using Srm.CMER.Application.Contracts.CmerInfo; namespace Srm.Mail { public class SendMailUtil { public async static Task<string> SendEmail(SendEmialDto sendEmialDto,List<strin…...
Zeal下载文档慢的问题
1. 安装Zeal 官方下载网站: https://zealdocs.org/ 2. 安装文档(在线安装方式)(下载速度非常慢) Tools - Docsets Available中下载安装对应的文档 3. 安装文档(离线安装方式) ①下载文档…...
HR模块开发(1):简单的开发流程和注意事项
HR模块开发 一、模块概述 人力资源管理解决方案关注3个领域:每位雇员都发展和维护着‘公司内’和‘公司外’的种种‘关系’。运用科技,强化这些关系,可以提高忠诚度和生产力,公司整体得到商业价值。 员工关系管理员工职业生命周期管理员工事务处理管理HR模块的基本知识和构…...
创建Vue实例
我们已经知道了Vue框架可以 基于数据帮助我们渲染出用户界面,那应该怎么做呢? 核心步骤(4步): 准备容器 引包(官网) — 开发版本/生产版本 创建Vue实例 new Vue() 指定配置项,渲…...
2024上海国际人工智能展(CSITF)以“技术,让生活更精彩”为核心理念,以“创新驱动发展,保护知识产权,促进技术贸易”为主题
2024上海国际人工智能展(CSITF) China(Shanghai)International Technology Fair 时间:2024年6月12-14日 地点:上海世博展览馆 主办单位 中华人民共和国商务部 中华人民共和国科学技术部 中华人民共和国国家知识产权局 上海市…...
Vue3使用Monaco-editor
Monaco-editor,一个vs code 编辑器,需要将其集成到项目。不说闲话了,直接上代码。 npm地址:https://www.npmjs.com/package/monaco-editor 中文文档:https://aydk.site/editor/ 安装: pnpm add monaco…...
java 根据ip获取到城市 GeoLite2-City.mmdb
本文可解决 根据ip定位获取不到问题,提供多种方式仅供参考: 1.选型 1.1 实现方式 Java可以实现IP地址解析和省市区信息查询,但是需要借助一些外部数据源或数据库来实现。常用的方法有以下几种: 1.1.1 本地文件解析 可以通过下…...
kaggle使用说明
kaggle kaggle使用参考1、kaggle目录2、kaggle上传本地文件后,如何不改代码就可运行3、已上传文件的修改3.1 重新上传3.2 重写文件 4、创建文件夹5、结果下载5.1 多文件:先打包再下载5.2 重定文件下载链接 kaggle使用参考 Kaggle 新手入门必看ÿ…...
BUUCTF FLAG 1
BUUCTF:https://buuoj.cn/challenges 题目描述: 注意:请将 hctf 替换为 flag 提交,格式 flag{} 密文: 下载附件,得到一张.png图片。 解题思路: 1、因为附件是一张图片,先放到StegSolve中&…...
万物皆可“云” 从杭州云栖大会看数智生活的未来
文章目录 前言一、云栖渐进:一个科技论坛的变迁与互联网历史互联网创新创业飞天进化飞天智能驱动数字中国 二、2023云栖大会:云计算人工智能 玩出科技跨界新花样大会亮点重磅嘉宾热门展览算力馆人工智能馆产业创新馆 总结 前言 10月31日,202…...
LeetCode1518 换水问题
题目描述 超市正在促销,你可以用 numExchange 个空水瓶从超市兑换一瓶水。最开始,你一共购入了 numBottles 瓶水。 如果喝掉了水瓶中的水,那么水瓶就会变成空的。 给你两个整数 numBottles 和 numExchange ,返回你 最多 可以喝…...
强大日志查看器,助力数据联动分析
前言 我们曾讨论过观测云查看器强大的查询筛选和搜索功能,能够帮助用户快速、精准地检索数据,定位故障问题(参见《如何使用查看器筛选、搜索功能进行数据定位?》)。除此之外,日志查看器不仅可以帮助我们收…...
HIBS一些简介
文章目录 距离发展:意义使用挑战安全IOT活动服务频带可行性频谱 距离 海拔约20KM的平流层中,国际电联无线电条例(RR)将HAPS定义为位于20-50公里高度和相对于地球的指定标称固定点的物体上的无线电台。 #高空平台作为IMT基站(HIB…...
OpenCV实现人脸关键点检测
目录 实现过程 1,代码解读 1.1 导入工具包 1.2导入所需图像,以及训练好的人脸预测模型 1.3 将 dlib 的关键点对象转换为 NumPy 数组,以便后续处理 1.4图像上可视化面部关键点 1.5# 读取输入数据,预处理 1.6进行人脸检测 1…...
300万美元!澳大利亚昆士兰州投资当地首家量子公司AQC
澳大利亚模拟量子电路公司(AQC)联合创始人 Tom Stace 教授和 Arkady Federov 副教授(图片来源:网络) 澳大利亚风险投资基金会Uniseed为澳大利亚昆士兰大学的两名教授提供了300万美元的资金,资助他们创办了…...
基于 HarmonyOS 6.0 的家政服务预约页面实战开发:ArkUI 页面构建与跨端设计深度解析
基于 HarmonyOS 6.0 的家政服务预约页面实战开发:ArkUI 页面构建与跨端设计深度解析 前言 随着 HarmonyOS 生态逐渐成熟,HarmonyOS NEXT 与 HarmonyOS 6.0 的持续推进,越来越多开发者开始从传统 Android、Flutter、Web 技术栈逐步迁移到鸿蒙原…...
如何快速解密网易云NCM文件:ncmdumpGUI完整使用指南
如何快速解密网易云NCM文件:ncmdumpGUI完整使用指南 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经在网易云音乐下载了喜欢的歌曲&…...
异构多核处理器如何实现安卓、Linux与RTOS的原生融合?
1. 项目概述:一颗“三栖”处理器的诞生最近在嵌入式圈子和一些硬件开发者社区里,一个话题的热度悄然攀升:一颗号称能同时原生运行安卓、Linux和RTOS的国产CPU。这听起来有点像是“瑞士军刀”式的处理器,试图用一个硬件平台覆盖从消…...
视听融合新范式!黎阳之光打破视觉边界,声影协同赋能全域智慧管控
长久以来,图形图像可视化技术早已成为智慧安防、低空管控、工业监测领域的主流应用,依托高清视频、三维实景、数字孪生图形图像能力,实现场景直观呈现、目标可视追踪、环境全景复刻,为各行各业搭建起可视化智慧管理体系。深耕图形…...
仅限本周开放|Perplexity编程搜索高阶指令集(含12条未公开$context参数),错过再等半年!
更多请点击: https://codechina.net 第一章:Perplexity编程教程搜索概览 Perplexity 是一款以实时网络检索与推理能力见长的 AI 工具,其在编程学习场景中展现出独特优势——它不依赖静态知识库,而是动态调用最新技术文档、GitHub…...
Teledyne PDS后处理软件保姆级教程:从新建项目到格网导出的完整流程
Teledyne PDS后处理软件从入门到精通:多波束数据处理全流程实战指南 第一次打开Teledyne PDS后处理软件时,满屏的专业术语和复杂菜单让不少水下测量工程师感到无从下手。作为处理T50P等多波束测深数据的核心工具,PDS软件的操作流程直接关系到…...
【2026】知云文献翻译安装使用指南:学术PDF划选即译,研究生必备工具
读英文文献最烦的不是词汇,是格式。复制到翻译软件,格式全乱、公式变问号、图注和正文混在一起。知云文献翻译的解法是直接在PDF里划选翻译,格式不动,原文译文左右对照,不用来回切换窗口。 这篇从安装到核心功能配置一…...
2026亲测10大论文降AI工具,免费好用的都在这了
说实话,咱们26届熬过初稿真的挺不容易,万一终审抽检没过就太冤了,谁都不想在最后关头被卡住。身边有不少同学试图手动去改,结果原格式全乱了,踩过坑才 知道找对工具到底有多重要。 提升内容原创度很关键,终…...
别再只存字节了!用C语言共用体(Union)在EEPROM里优雅存储浮点数和结构体(STM32实战)
嵌入式数据存储进阶:用共用体实现EEPROM中的浮点数与结构体存储 在嵌入式开发中,数据存储是每个工程师都无法回避的挑战。当我们需要将设备校准参数、运行日志或用户配置等非字节型数据保存到EEPROM时,传统的逐字节读写方法往往显得笨拙且容易…...
Godot-MCP完整指南:如何用AI助手3倍提升游戏开发效率
Godot-MCP完整指南:如何用AI助手3倍提升游戏开发效率 【免费下载链接】Godot-MCP An MCP for Godot that lets you create and edit games in the Godot game engine with tools like Claude 项目地址: https://gitcode.com/gh_mirrors/god/Godot-MCP Godot-…...
