#代码创建3D模型

简介:



Demo 1:创建三角形

示例代码

构建一个只包含单个三角形及纹理坐标的网格

复制代码
using UnityEngine;
using System.Collections;

public class MeshTest : MonoBehaviour
{
    void Start()
    {
        MeshFilter mf = GetComponent<MeshFilter>();
        Mesh mesh = new Mesh();
        mf.mesh = mesh;

        mesh.vertices = new Vector3[3] { new Vector3(0, 0, 0), new Vector3(0, 1, 0), new Vector3(1, 1, 0) };
        mesh.uv = new Vector2[3] { new Vector2(0, 0), new Vector2(0, 1), new Vector2(1, 1) };
        mesh.triangles = new int[3] { 0, 1, 2 };
    }
}
复制代码

创建出三角形

可以看到只有单个三角形

image

顶点信息

从下图可以看出,共有1个三角形,3个顶点

image

 

Demo2:二个三角形

示例代码

构建两个三角形及纹理坐标的网格

复制代码
using UnityEngine;
using System.Collections;

public class MyMesh : MonoBehaviour
{
    void Start()
    {
        MeshFilter mf = GetComponent<MeshFilter>();
        Mesh mesh = new Mesh();
        mf.mesh = mesh;
        //顶点[决定绘制出来图片的scale]
        mesh.vertices = new Vector3[4] { new Vector3(0, 0, 0), new Vector3(1, 0, 0), new Vector3(0, 1, 0), new Vector3(1, 1, 0) };
        //三角形顶点索引的顺序[3的倍数]
        mesh.triangles = new int[6] { 0, 2, 1, 2, 3, 1 };
        //法线
        mesh.normals = new Vector3[4] { new Vector3(0, 0, -1), new Vector3(0, 0, -1), new Vector3(0, 0, -1), new Vector3(0, 0, -1), };
        //uv纹理坐标
        mesh.uv = new Vector2[4] { new Vector2(0, 0), new Vector2(1, 0), new Vector2(0, 1), new Vector2(1, 1) };
    }
}
复制代码

三角形+三角形 = 四边形

image

顶点信息

从下图可以看出,共有2个三角形,4个顶点

image

改变顶点信息

设置的三角形顶点顺序不同,绘制出来的效果也不相同 (mesh.triangles = new int[6] { 0, 2, 1, 0, 3, 1 };)

image

顶点 纹理 图解

image

实现步骤

1、创建一个空的GameObject,绑定Mesh Filter及Mesh Renderer组件

image

2、创建一个Material,拖一张图片进去,修改Shader为透明Shader

image

3、把2创建的Material赋给1创建的GameObjectMesh Renderer的Materiials

image

4、这个时候默认在场景中是看不到这个GameObject渲染的

image

5、创建脚本MeshTest.cs  代码如Demo1,绑定在GameObject上,运行查看效果

6、创建脚本MyMesh.cs   代码如Demo2,绑定在GameObject上,运行查看效果

其它方法

创建一个Quad,不需要运行在Scene场景就可以看到

imageimage

文献资料

其它方法的资料

Unity3D研究院之与根据动态的两个轨迹点绘制面详解(二十)http://www.xuanyusong.com/archives/780

<Unity3D>Unity3D中MeshRenderer的使用 http://blog.csdn.net/zuoyamin/article/details/9287507

[Unity3D学习]Mesh创建三角形、长方形 http://blog.gamerisker.com/archives/494.html

三角网格(Triangle Mesh)  http://lib.yoekey.com/?p=120

【Unity C#编程】制作星星(一)http://unity3d.9tech.cn/news/2014/0324/40085.html



本文转自赵青青博客园博客,原文链接:http://www.cnblogs.com/zhaoqingqing/p/4048910.html,如需转载请自行联系原作者
相关文章
|
2月前
|
开发框架 供应链 监控
并行开发模型详解:类型、步骤及其应用解析
在现代研发环境中,企业需要在有限时间内推出高质量的产品,以满足客户不断变化的需求。传统的线性开发模式往往拖慢进度,导致资源浪费和延迟交付。并行开发模型通过允许多个开发阶段同时进行,极大提高了产品开发的效率和响应能力。本文将深入解析并行开发模型,涵盖其类型、步骤及如何通过辅助工具优化团队协作和管理工作流。
74 3
|
1月前
|
自然语言处理 安全 测试技术
基于大模型的应用的测试的一些注意事项
大模型应用测试需注意三大冲突:时间敏感性冲突,即模型数据可能随时间变得过时;数据真实性冲突,指训练数据中可能存在虚假信息,影响模型准确性;数据一致性冲突,表现为模型对语义相同但句法不同的输入反应不一。测试时应针对这些问题设计用例,确保模型性能。
67 4
|
2月前
|
机器学习/深度学习 数据采集 算法
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
这篇博客文章介绍了如何使用包含多个网络和多种训练策略的框架来完成多目标分类任务,涵盖了从数据准备到训练、测试和部署的完整流程,并提供了相关代码和配置文件。
66 0
目标分类笔记(一): 利用包含多个网络多种训练策略的框架来完成多目标分类任务(从数据准备到训练测试部署的完整流程)
|
2月前
|
存储 并行计算 PyTorch
探索PyTorch:模型的定义和保存方法
探索PyTorch:模型的定义和保存方法
|
5月前
|
算法
创建一个训练函数
【7月更文挑战第22天】创建一个训练函数。
41 4
|
6月前
|
存储 设计模式 C语言
技术笔记:QOM模型初始化流程
技术笔记:QOM模型初始化流程
33 0
|
7月前
|
Python
创建模型
创建模型。
35 1
|
7月前
|
关系型数据库 MySQL 数据库
定义模型和模型配置
定义模型和模型配置。
50 1
|
7月前
|
自然语言处理
【大模型】如何使用提示工程来改善 LLM 输出?
【5月更文挑战第5天】【大模型】如何使用提示工程来改善 LLM 输出?
|
图形学
模型粗糙度怎么修改?
模型粗糙度属性可以用于各种需要模拟不同材质表面光滑度和纹理的场景。
97 0