跳到主要内容

Models and Meshes / 模型与网格

源文档地址

用 FileModel 节点可以从文件加载模型。支持这些文件类型:

  • .fbx;.dae;.3ds;.gltf;.glb;.obj;.blend;.x;.md2;.md3;.dxf;.ply;.stl;.stp

加载好的模型可以接到 ModelEntity 上,用某个材质把它渲染出来。

材质、贴图、动画和骨骼目前还不能自动加载,以后的版本会加上。例子见帮助文档 Load Assets from File,里面还演示了怎样给一个模型指定多个材质。

模型也可以从 Stride 游戏项目里加载。这样做的好处是你可以在 Stride 编辑器里把模型连同材质一起配置好。见 Stride 手册里的 Assets(英文)和 Animation(英文)。另见帮助文档 Load Stride Project 和 Modify Entities from a Stride Project。

Difference between Model and Mesh / Model 与 Mesh 的区别​

Model​

Model 是个高层的类,把几何(网格)和外观(材质)组合在一起,还可以选配一副用于动画的骨骼。所以简单模型(一个网格加一份材质)能表示,带动画的角色这类复杂 3D 物体也能表示。

在场景图里,一个模型必须被指派给某个 Entity 上的 ModelComponent。见渲染。

Model 的数据结构

拼一个模型的数据:简单情形(一个网格加一份材质)用 MeshModel 节点,多个网格和材质用 MeshesModel。把单个模型接进场景图用 ModelEntity 节点 —— 内部已经替你把 entity 和 component 配好了。

Mesh​

Mesh 是模型的一部分,它装着几何信息,以及一个指向模型材质列表中某份材质的序号。

Mesh 的数据结构

真正的几何数据存放在一个叫 MeshDraw 的类里,它持有绘制几何时要用的索引缓冲和顶点缓冲这些 GPU 资源。具体来说,MeshDraw 有 IndexBufferBinding 和 VertexBufferBinding 两个参数,各自持有相应的缓冲,外加一些给图形管线用的信息。所以从模型到第一个顶点缓冲的完整路径是:Model.Meshes[0].Draw.VertexBuffers[0].Buffer。

顶点缓冲里存的顶点可以带不同的字段,比如法线、纹理坐标等等。为了让取顶点数据这件事更顺手,你可以用 MeshSplit 这组节点,见帮助文档 Split a mesh into its components。

Dynamic Mesh / 动态网格​

DynamicMesh 和 DynamicMesh (Indexed) 这两个节点,能从顶点数据和/或索引数据造出一个网格。

把单个网格接进场景图用 MeshEntity 节点 —— 内部已经替你把 entity 和 component 配好了。网格也可以走底层工作流,用 MeshRenderer 渲染,细节见渲染。帮助文档 Dynamic Mesh 是一个搭建并渲染网格的例子。