C#代码创建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 };
    }
}

可以看到只有单个三角形

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

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) };
    }
}

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

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

图解

步骤

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

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

3、把2创建的Material赋给1创建的GameObject的Mesh Renderer下的Materiasl

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

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

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

其它方法

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

一些其它方法的链接

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

时间: 2024-10-04 21:53:49

C#代码创建3D模型的相关文章

创建3D模型/添加屏幕监听,点击屏幕时,精灵带有旋转的移动

 3D模型创建 //3D models auto model = Sprite3D::create("Sprite3DTest/boss1.obj"); model->setScale(4); model->setTexture("Sprite3DTest/boss.png"); model->setPosition3D(Vec3(s.width/2, s.height/2, 0)); addChild(model); EventListene

第七章:3D模型渲染

原文链接: http://www.rastertek.com/gl40tut07.html Tutorial 7: 3D Model Rendering This tutorial will cover how to render 3D models in OpenGL 4.0 using GLSL. The code in this tutorial is based on the code from the diffuse lighting tutorial. 本章将介绍如何在OpenGL

DNA分子结构3D模型

生物信息资源更新越来越快,使用可视化的方法来分析DNA序列已成为生物信息学的一个研究热点,用图形表示DNA序列的方法也越来越成熟.2011年,著名杂志<Science>发表一篇引起轰动的文章:<Presenting the Human Genome:Now is 3D!>,这篇文章全然给我们描写叙述了人类基因组測序未来的蓝图,可见3D技术在非常多领域都是发展方向. 使用mono能够高速的创建DNA分子结构立体模型,效果例如以下: 当然简单的呈现DNA分子结构,不过一部分功能,假设将

3d模型一般怎么导入到到Threejs中使用

这是我之前做的一个demo,导入的3d模型文件是obj格式的,需要使用OBJLoader和MTLLoader, mtl文件用于描述多边形可视面貌的材质如果你可以导出obj.mtl文件的话,那么就可以使用下面的代码把3d模型添加到three.js构建的场景里了 function loadBuild() { var loader = new THREE.OBJLoader(); var mtlLoader = new THREE.MTLLoader(); mtlLoader.setPath( "ci

cocos2d-x在Lua中添加3d模型创建3D动画

--3d模型和3D动画的创建 require"Cocos2d" local Sprite3DScene=class("Sprite3DScene",function() return cc.Scene:create() end) --添加create函数 function Sprite3DScene:create() local scene=Sprite3DScene.new() scene:addChild(scene:init()) return scene e

ROS 学习系列 -- 使用urdf创建机器人模型在Rviz中3D观察 之一 joint 使用

我们接着上文  ROS 学习系列 -- 使用urdf创建机器人模型在Rviz中3D观察 之一 link使用继续完成创建带四个可以转动轮子的双层小车. 一 建立可以转动的joint <span style="font-size:18px;"><?xml version="1.0"?> <robot name="sp1s"> <link name="base_link"> <v

【Unity】3.0 第3章 创建和导入3D模型

分类:Unity.C#.VS2015 创建日期:2016-04-02 一.简介 利用Unity内置的基本模型和工具,不需要借助任何其他的三维建模软件,就可以直接创建出各种3D模型,这是这一章我们首先学习的内容. 当你学会了基本操作技巧后,再进一步利用(3ds Max.Maya.Blender等)专业的三维建模软件学习复杂三维模型的构建,然后再将其导入到Unity工程这就可以使用了. 本章基本操作关键点: l 快捷工具栏的使用. l 快捷键(Q:手形.W:平移.E:旋转.R:缩放)的使用. l 快

Chem 3D中怎么创建立体模型

ChemDraw作为一款很受大家欢迎的化学绘图软件,其在绘制平面化学方面的功能已经非常的强大了,其实它也可以绘制3D图形.Chem 3D就是绘制3D图形的重要组件.而且为了满足不同的用户绘图的需求,可以给大家提供三种方法来绘制3D图形.有的方法需要绘制者对化学立体模型的结构比较熟悉,有的要求对化学式比较熟悉,绘制者可以根据自己的实际情况选择绘制方法.下面就来给大家分享一下Chem 3D中怎么创建立体模型? 原文:http://www.chemdraw.com.cn/ruheshiyong/lit

实现法线贴图3D模型渲染的脚本代码

转载 http://blog.csdn.net/games_maker/article/details/43935835 这几天研究了下wooyoogame的技术,这个网站的3d显示实现貌似很简单的样子哦,我做了个简单的教程给大家 里面的脚本感觉也不难,有点想json的样子,靠配置就可以做出显示了 先到http://www.wooyoogame.com?sp=209 注册一个账户,然后点击游戏开发(装个插件)就可以写脚本了 1.导出模型(记得要调整下比率单位1为1米),不然模型会超大或超小 2.