1

我是 3D 领域的新手,并且已经尝试了几种引擎以开始使用。我选择 away3D 是因为它很简单。

我正在创建一个平面并在其上粘贴纹理,并希望能够通过实时更改 UV 数据来为纹理设置动画。

var plane:Mesh = new Mesh(new PlaneGeometry(10, 10, 1, 1), textMat);

这些行都返回 52:

CompactSubGeometry(plane.geometry.subGeometries[0]).UVData.length;
plane.subMeshes[0].vertexData.length;

据我在其他引擎中的理解,顶点数据包含每个顶点的 3 个值(x,y,z)。考虑到一个平面可以由 4 个或 6 个顶点构建,这将导致整个顶点数组有 12 个或 18 个顶点值。

UVData 数组通常包含每个对应顶点的 U 和 V 值,这将导致比顶点数组少的值。但是 UVdata 和 vertexData 数组在这里具有相同的长度。

我尝试在 away3D 论坛上提问,但没有得到回应,而且我对 3D 的了解仍然太少,无法理解任何 away3d 源代码。

谁能解释为什么 vertexData 和 UvData 包含这么多值,以及它们代表什么?

4

2 回答 2

1

http://away3d.com/forum/viewthread/4854/

vertexData = num_vertices * (x,y,z,Nx,Ny,Nz,Tx,Ty,Tz,u,v,Su,Sv)

车道几何(10、10、1、1)

52 = 4 * 13

于 2014-04-26T01:37:59.267 回答
0

创建网格时,使用 new PlaneGeometry(10, 10, 1, 1) 您应该在 vertexData 中获得 12 个项目,在 UVData 中获得 8 个项目。它们对应于:

vertexData:4 个顶点 * 3(x、y、z 值)。UVData:4 个顶点 * 2(u、v 值)。

于 2013-03-20T13:43:05.693 回答