meshfilter_unity meshfilter - CSDN
精华内容
参与话题
  • gt;Cube。然后查看右侧的Inspector窗口,如果没有的话,看顶部的Windows菜单,里面有Inspector窗口。...包含了Mesh FilterMesh Renderer组件,然后再Mesh Filter中包含了Mesh The Mesh Filter takes a me...

    1.首先我们创建一个Cube在Unity中,在Hierarchy中点击右键3d Object ->Cube。然后查看右侧的Inspector窗口,如果没有的话,看顶部的Windows菜单,里面有Inspector窗口。如下截图:

    包含了Mesh Filter,Mesh Renderer组件,然后再Mesh Filter中包含了Mesh

    The Mesh Filter takes a mesh from your assets and passes it to the Mesh Renderer for rendering on the screen.

    大体意思是说,Mesh Filter是用了一个从资源里取到的mesh资源,然后通过Mesh Render,渲染到屏幕中

    那么这个Mesh中都包含了什么东东?这个问题的发现原因是由于我发现有些Object里有Mesh Filter 但是没有Mesh。所以才想到这个东东可以动过代码创建!怎么创建?首先要知道Mesh里都包含了什么玩意!!

    在Mesh中存储着三维模型的数据:vertices(顶点数据数组Vector3[])、triangles(三角形顶点索引数组,int[])、normals(法线向量数组,Vector3[])、uv(纹理坐标数组,Vector2[])。我怎么知道的?看代码哇...

    Mesh mesh = new Mesh(); 自己去源代码里看

    然后这里需要一些OpenGL相关的知识,如下截图,这里知道就好,理解的话需要看OpenGL相关内容

     

    展开全文
  • meshfilter 使用

    千次阅读 2018-04-18 16:19:22
    第一步:指定定点,比如我们画三角形,我们指定三个定点第二部:指定三角形顺序,注意个triangles的数组的大小必须是3的倍数,然后三角形的点顺序必须是顺时针的,当然你逆时针只能在反面看到。...

    第一步:指定定点,比如我们画三角形,我们指定三个定点

    第二部:指定三角形顺序,注意个triangles的数组的大小必须是3的倍数,然后三角形的点顺序必须是顺时针的,当然你逆时针只能在反面看到。

    https://blog.csdn.net/nanggong/article/details/54311090
    展开全文
  • Unity3D的Mesh与MeshFilter的使用

    万次阅读 多人点赞 2014-11-27 18:00:21
    模型导入unity后,可以使用unity的Inspector面板对模型在某个坐标轴上进行平移、旋转和缩放操作(如图1)。 图 1  Inspector面板提供功能是所见即所得的,调整后立刻可以看到效果,相当的方便。...

     模型导入unity后,可以使用unity的Inspector面板对模型在某个坐标轴上进行平移、旋转和缩放操作(如图1)。

    image图 1

        Inspector面板提供功能是所见即所得的,调整后立刻可以看到效果,相当的方便。但是这些功能还不能完全满足游戏开发的要求,比如为了减轻美工的工作量一些游戏对场景中的模型标准作出了一些规定,使这些模块化的小模型能按照一定的规律拼接成丰富多样的大模型。拼接过程往往要对模型的local coordinates进行调整才能最终形成一个“无缝”的大模型,而这个过程常常是在游戏运行时进行(或者地图初始化时),因此需要引擎提供修改模型mesh的接口。十分幸运的是unity提供了这样的接口。

     

     

    Mesh and MeshFilter

        需要修改模型的网格数据,首先第一步是要想办法获得模型的mesh,这里我们需要Mesh Filter,unity文档中的解释如下:

    The Mesh Filter takes a mesh from your assets and passes it to the Mesh Renderer for rendering on the screen.

    class-MeshFilter-0

    如上图,Robot手里拿的枪的网格数据保存在以gun_model命名的Mesh里,而这个Mesh则隶属于Gun_model的MeshFilter。知道了网格数据保存的位置,接下来需要做的就是获取这些数据并修改它们。下面使用一个简单的cliff模型为例子介绍如何修改模型的网格数据。

     

     

    Simple Example

        首先来看原始的模型长什么样?

    image图 3

        现在需要修改模型的网格数据,把模型最高点的高度坐标挑高一倍,代码如下:

         using UnityEngine;
         using System.Collections;
          
         [RequireComponent(typeof(MeshFilter))]
         public class example : MonoBehaviour {
             void Update() {
                 Mesh mesh = GetComponent<MeshFilter>().mesh;
             Vector3 [] vertices = mesh.vertices;
                 
             int p = 0;
             int flag = -1;
             float maxheight = 0.0F;
             while (p < vertices.Length) {
                 if(vertices[p].z > maxheight) {
                     maxheight = vertices[p].z;
                     flag = p;    
                 }
                 p++;
            }
             vertices[flag] += new Vector3(0, 0, maxheight);
                 
             mesh.vertices = vertices;
             mesh.RecalculateNormals();
             }
         }

     注意:本例所使用的模型的local坐标系的z轴相当于unity的y轴,因此上述代码时对z轴进行修改。代码运行的结果如下:

    image图 4

        是不是很简单!unity强大的接口以及较为详细的文档对开发者来说确实是一个福音,另外使用C#编程对于我这苦逼的不合格C++程序员来说确实很爽!

        另外有一点值得注意:上述代码所对应的脚本一定要drag到GameObject里MeshFilter的拥有者,才能使代码生效。如下图5必须要把script拖拽到Cliffs01才能生效,因为在cliffs_1cm的GameObject里只有Cliffs01拥有MeshFilter(如图6)

    image图 5

    image

    图 6

     

     

    References:

    [1]http://docs.unity3d.com/Documentation/ScriptReference/MeshFilter-mesh.html

    [2]http://docs.unity3d.com/Documentation/ScriptReference/Mesh.html

    原文地址:http://www.cnblogs.com/ychellboy/archive/2012/08/05/2624366.html

    展开全文
  • Unity中Mesh FilterMesh Renderer的作用

    千次阅读 2018-10-22 15:47:57
    ** Unity中Mesh Filter、Mesh Renderer的作用 ** ----------------------------------------------------------------------------------------------- Mesh是Unity内的一个组件...MeshFilter&nbsp;网格过滤器 ...

    **

    Unity中Mesh Filter、Mesh Renderer的作用

    **

    -----------------------------------------------------------------------------------------------

    Mesh是Unity内的一个组件,称为网格组件。

    Mesh:是指模型的网格,建模就是建网格。细看Mesh,可以知道Mesh的主要属性内容包括顶点坐标法线纹理坐标三角形绘制序列等其他有用属性和功能。因此建网格,就是画三角形;画三角形就是定位三个点。

    Mesh Filter:内包含一个Mesh组件,可以根据MeshFilter获得模型网格的组件,也可以为MeshFilter设置Mesh内容。

    Mesh Render:是用于把网格渲染出来的组件。MeshFilter的作用就是把Mesh扔给MeshRender将模型或者说是几何体绘制显示出来。

     

    它们之间的关系大概就是Unity中的对象就是GameObject,每个GameObject都可以有一个MeshFilter组件(也可以没有),该组件又有Mesh属性(这个一定有),而该属性又有顶点坐标,法线等属性。而如果GameObject里有MeshFilter,则必须要Mesh Renderer才能将此网格渲染出来,不然是看不见该网格的。

     

     

    ---------------------------------------------------------------------------------------------------------------

     Mesh的属性

    • 顶点坐标(vertex)
    • 法线(normal)
    • 纹理坐标(uv)
    • 三角形序列(triangle)

    顶点坐标:顶点坐标数组存放Mesh的每个顶点的空间坐标,假设某mesh有n个顶点,则vertex的size为n

    法线:法线数组存放mesh每个顶点的法线,大小与顶点坐标对应,normal[i]对应顶点vertex[i]的法线

    纹理坐标:它定义了图片上每个点的位置的信息. 这些点与3D模型是相互联系的, 以决定表面纹理贴图的位置. UV就是将图像上每一个点精确对应到模型物体的表面. uv[i]对应vertex[i]

    三角形序列:每个mesh都由若干个三角形组成,而三角形的三个点就是顶点坐标里的点,三角形的数组的size = 三角形个数 * 3.

    例如:某mesh有四个顶点0,1,2,3,

    V0(1, 1, 0),
    V1(-1, 1, 0),
    V2(1, -1, 0),
    V3(-1, -1, 0)

    那么它们可以组成这样的一个网格,

    tri[0] = ver[0],ver[3],ver[1],tri[1] = ver[0],ver[2],ver[3],

    注意:三角形的顶点顺序必须是顺时针,顺时针表示正面,逆时针表示背面,而unity3d在渲染时默认只渲染正面,背面是看不见的。

    那么该三角形可以表示为:

    tri  = new int[2 * 3]{0, 3, 1,   0, 2, 3};

    如何要获取第N个三角形对应的三个顶点坐标,则:v1 = tri[N*3 + 0], v2 = tri[N*3 + 1], v3 = tir[N*3 + 2]

     

     ---------------------------------------------------------------------------------------------------------------

    示例:

    1.创建一个GameObject并添加MeshFilter以及MeshRender组件,并创建一个“CreateMesh.cs”脚本给它。

    2.获取该对象的filter组件,并创建一个mesh给它。

    3.为该mesh设置属性,这里先设置顶点,然后将三角形与顶点绑定

    复制代码
     1 using UnityEngine;
     2 using System.Collections;
     3 
     4 public class CreateMesh : MonoBehaviour {
     5 
     6     private MeshFilter filter;
     7     private Mesh mesh;
     8 
     9     // Use this for initialization
    10     void Start () {
    11         // 获取GameObject的Filter组件
    12         filter = GetComponent<MeshFilter>();
    13         // 并新建一个mesh给它
    14         mesh = new Mesh();
    15         filter.mesh = mesh;
    16 
    17         // 初始化网格
    18         InitMesh();
    19     }
    20     
    21     // Update is called once per frame
    22     void Update () {
    23     
    24     }
    25 
    26     /// <summary>
    27     /// Inits the mesh.
    28     /// </summary>
    29     void InitMesh()
    30     {
    31         mesh.name = "MyMesh";
    32 
    33         // 为网格创建顶点数组
    34         Vector3[] vertices = new Vector3[4]{
    35             new Vector3(1, 1, 0),
    36             new Vector3(-1, 1, 0),
    37             new Vector3(1, -1, 0),
    38             new Vector3(-1, -1, 0)
    39         };
    40 
    41         mesh.vertices = vertices;
    42 
    43         // 通过顶点为网格创建三角形
    44         int[] triangles = new int[2 * 3]{
    45             0, 3, 1,   0, 2, 3
    46         };
    47 
    48         mesh.triangles = triangles;
    49     }
    50 }
    复制代码

    效果如图:

    3.网格已经成功生成,接下来该给网格贴图了,在Inspector视图里选中Mesh Render,并拖一个材质给它,

    Mesh Render是负责渲染的,将Mesh Filter里的mesh通过自身的Materials渲染出来。

    设置完材质后,我们需要将纹理贴图与网格顶点一一对应起来,这样才能渲染出来。

    复制代码
    // 为mesh设置纹理贴图坐标
            Vector2[] uv = new Vector2[4]{
                new Vector2(1, 1),
                new Vector2(0, 1),
                new Vector2(1, 0),
                new Vector2(0, 0)
            };
    
        mesh.uv </span>= uv;</pre>
    
    复制代码

     效果如图:

    4.mesh还有两个重要的属性,法线和颜色,这两个我不是很懂,暂时没加入,

    不过看了下自带的cube模型的mesh,每个顶点的法线好像就是设置为那个顶点所在的面的法线。

    不过肯定不是这样的,毕竟要是两个不在同一面的面共有一个顶点,那就不成立了。

    展开全文
  • Mesh Filter & Mesh Render

    2019-07-17 01:47:20
    Mesh Filter】  TheMesh Filtertakes a mesh from your assets and passes it to theMesh Rendererfor rendering on the screen.  Mesh Filter决定使用哪一个MeshMesh Filter只有一个参数,就是指定Mesh。 ...
  • Mesh Filter: 从资源中获取网格并将其传递给网格渲染以便在屏幕上渲染。 Mesh Renderer: 从Mesh Filter获取几何体,然后在对象的变换组件所定义的位置渲染该几何体。 简单说就是前者负责中转网格,后者承接...
  • 最近在项目中写了一个自动检测资源的工具,但在检测的时候有个问题给卡了一下,就是资源的MeshFilter的mesh Miss了,我才开始想的是那就检测一下mesh为null就好了,于是就有了第一版 var mesh = GetComponent<Mesh...
  • 首先明确一点,Mesh是一个类,MeshRenderer和MeshFilter都可以作为组件,挂载到GameObject上面,但是Mesh不可以。 Mesh: 译作 网格,是一个数据结构,记载了组成一个GameObject的所有三角形面。 MeshFilter: 译作 ...
  • MeshFilter网格过滤器 MeshFilter决定使用哪一个Mesh。MeshFilter只有一个参数,就是指定Mesh。 属性:mesh,sharedMesh sharedMesh就像引用传递,mesh就像值传递。 建议只使用sharedMesh来读网格数据而不是来写,...
  • Unity Mesh FilterMesh Renderer

    千次阅读 2015-12-30 16:11:51
    Mesh Filter 网格过滤器 用于从资源中读取网格信息也就是Mesh ,读取信息之后可以传递给 Mesh Renderer 。 Mesh Renderer 网格渲染器 将接受到的网格信息渲染出来
  • MeshFilter用来选取网格给render使用。 sharedMesh是公共的引用,如果修改网格,其他的对象显示会一起改变。 mesh大概是个复制的引用了吧。 在场景中放两个cube,一个挂脚本,切换mesh和sharedMesh可以看到变化,...
  • ** Unity中Mesh Filter、Mesh Renderer的作用 ** Mesh是Unity内的一个组件,称为网格组件。...MeshFilter 网格过滤器 Mesh Renderer 网格渲染器 Mesh:是指模型的网格,建模就是建网格。细看Mesh,可以知道M...
  • 好从本章开始扫盲,我是风蚀,也可以叫...添加完cube以后系统会自动为你添加mesh filtermesh randerer,至于box consider我么后面会讲,那是一个碰撞体。 unity不会做没有用的事,可以见这三个组件对我们对象的重...
  • Mesh、MeshFilter、MeshRender Mesh Meshes contain vertices and multiple triangle arrays. For every vertex there can be a normal, two texture coordinates, color and tangent. These are optional though ...
  • Material 材质 作用: 定义了用于渲染的texture 和 color ...Mesh:网格 作用: 由三角形组成。由一个数组存储,前3个元素表示第一个三角形的顶点,然后依次表示第2个、第三个。 法线是三角形边和角之间的面...
  • Mesh:网格组件。主要用于设置外形和外表。    Mesh Filter:网格过滤器。就是为游戏对象添加一个外形。  例:设置外形为Sphere  
  • MeshFilter

    2018-06-21 16:46:57
    using UnityEngine;... [RequireComponent(typeof(MeshFilter))] public class example : MonoBehaviour { void Update() { Mesh mesh = GetComponent&lt;MeshFilter&gt...
  • Unity API-----MeshFilter(网格过滤器) 官方文档阅读记录 版本 : 2019.3 官方文档传送门 MeshFilter是UnityEngine命名空间下的一个类. MeshFilter继承于Component.(即MeshFilter是组件) 描述 : MeshFilter用于对mesh...
  • unity - MeshFilter.mesh与sharedMesh的区别

    千次阅读 2020-08-17 12:18:55
    using UnityEngine; using UnityEngine.Rendering; public class ModifySharedMesh : MonoBehaviour { public Transform t1; public Transform t2; public Transform t3;... public bool usingShared...
1 2 3 4 5 ... 20
收藏数 6,802
精华内容 2,720
关键字:

meshfilter