Unity中指定物体的模型面数分析

这篇具有很好参考价值的文章主要介绍了Unity中指定物体的模型面数分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

给定一架飞机模型,需要分析该模型中,各个3D物体的面数和三角形数,目的是用于观察哪些物体面数过多,需要减面。

一、模型面数分析

Unity中指定物体的模型面数分析,unity,游戏引擎文章来源地址https://www.toymoban.com/news/detail-588305.html

二、脚本代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using System.Linq;

/// <summary>
/// 计算面数:计算物体的面数,用于模型面数分析,有右键菜单进行
/// </summary>
public class JiSuanMianShu : MonoBehaviour
{
    /// <summary>
    /// 部件信息
    /// </summary>
    [Serializable]
    public class PartInfo
    {
        /// <summary>
        /// 部件对象
        /// </summary>
        [SerializeField]
        [Header("部件对象")]
        public GameObject part;

        /// <summary>
        /// 三角形面数
        /// </summary>
        [SerializeField]
        [Header("三角形面数")]
        public int trianglesNum;

        /// <summary>
        /// 顶点数
        /// </summary>
        [SerializeField]
        [Header("顶点数")]
        public int vertexNum;
    }

    /// <summary>
    /// 物体的root
    /// </summary>
    [Header("物体的root")]
    public GameObject root;

    /// <summary>
    /// 计算结果:部件信息表
    /// </summary>
    [Header("计算结果:部件信息表")]
    public List<PartInfo> partsInfos = new List<PartInfo>();


#if UNITY_EDITOR
    [ContextMenu("分析模型")]
#endif
    void Load()
    {
        partsInfos.Clear();

        //@@所有的物体
        var allObjs = root.GetComponentsInChildren<Transform>().ToList();
        Debug.Log($"【1】====子物体的数量:{allObjs.Count}  时间戳: {Time.realtimeSinceStartup}");

        foreach (var go in allObjs)
        {
            if (go.GetComponent<MeshFilter>() == null) continue;
            var pi = new PartInfo();
            pi.part = go.gameObject;
            pi.trianglesNum = go.GetComponent<MeshFilter>().sharedMesh.triangles.Length;
            pi.vertexNum = go.GetComponent<MeshFilter>().sharedMesh.vertexCount;

            partsInfos.Add(pi);
        }
        partsInfos.Sort((a,b)=>a.trianglesNum.CompareTo(b.trianglesNum));
    }
}

到了这里,关于Unity中指定物体的模型面数分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity上接入手柄,手柄控制游戏物体移动

    1、unity软件上安装system input 组件。菜单栏【window】-【Packag Manager】打开如下界面,查找Input System,并且安装。 2、安装成功后插入手柄到windows上,打开菜单栏上【window】--【Analysis】--【Input Debuger】 进入Input Debug界面,可以看到手柄设备能被Unity识别。 3、双击【XinputControllerW

    2024年04月15日
    浏览(51)
  • Unity 3D游戏开发+脚本编程完整指南:Unity脚本概览-控制物体的运动

    教程相关资源 Unity 3D游戏开发+脚本编程完整指南(工程文件+PPT).zip Unity 脚本概览 脚本编写并不困难,但是如果直接从细节开始讲起,会让 读者难以看到脚本编程的全貌。因此本章不急于阐述脚本编写 的细节,只介绍简单的修改物体位置、处理用户输入和检测碰 撞的方法

    2024年02月21日
    浏览(75)
  • Unity之获取游戏物体对象或组件的几个方法

    在unity的实际项目开发中,往往都要获取游戏内的各种物体,比如玩家(Player),怪物(Monster),或者其他,那有什么方法可以快速获取呢,下面就来介绍unity获取游戏对象的几个方法 GameObject.Find GameObject.Find 通过游戏物体的名称获取对象 使用方法 缺点: 会遍历当前整个场

    2024年02月01日
    浏览(43)
  • Unity切割图片:把一张图片中的物体裁成多个单独的游戏物体

    首先选中需要切割的图片素材,将Inspector面板中的 Sprite Mode 由默认的 Single改为Multiple ; 然后点击 Sprite Editor ; 第一步之后便会弹出下例面板,然后 点击Slice菜单 ,继续点击,便 会自动被分割好 ,最后 点击右上角的Apply 。 点击Apply后在右下角会弹出一个小的面板,你可以

    2024年02月05日
    浏览(43)
  • 十八、Unity游戏引擎入门

    1、下载     首先需要下载Unity Hub,下载网址:https://unity.com/cn。     然后在其中下载Unity编辑器并安装,可选择最新版本。     接着需要选择适合的开发环境,例如Android Studio或Xcode,以便进行手机游戏开发。在安装完Unity后,需要根据项目需求下载对应的模块和插件,例

    2024年02月16日
    浏览(79)
  • unity 获取复杂物体(模型)中心点

    2024年02月02日
    浏览(57)
  • 【Unity3D】使用 FBX 格式的外部模型 ( 向 Unity 中添加 FBX 模型 | 向 Scene 场景中添加 FBX 模型 | 3D 物体渲染 | 3D 物体材质设置 )

    Unity 中使用的 3D 模型格式为 FBX , 使用如下建模软件 可制作该类型模型 : 3Dmax Maya ZBrush Cinema4D Blender 建模完成后 , 将 3D 模型导出为 FBX ( .fbx ) 格式 即可在 Unity 中使用 ; 在 Project 文件窗口 中的 Asstes 目录 下 , 创建一个模型目录 Models , 将 模型文件直接从文件系统中拖到该目录中

    2023年04月15日
    浏览(82)
  • unity 使用Vuforia扫描物体( ModelTarget 模型目标)

    1、下载vuforia插件vufora  2、下载模型生成器Model Target Generator  3、将vuforia插件导入到unity ,我 使用的unity是2021版本,导出插件时,只显示有两个文件,导入后,会有一个弹框 让更新插件,点击updata,更新就可以,  4、安装模型生成器,下载后,解压,双击安装 5、模型生成

    2024年02月14日
    浏览(55)
  • Unity3D:当频繁隐藏和显示游戏物体时,最优的处理方式

    首先说明一下处理的方法一般一共有3种 1.SetActive显示和隐藏物体【不推荐】 优:停止了Update和LateUpdate的性能消耗 劣:每一次显示会调用OnEnable,每一次隐藏会调用OnDisable 2.设置物体的位置,使物体移出摄像机的视野【不推荐】 优:相比较SetActive来说,没什么性能消耗 劣:

    2024年02月12日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包