babylon101

发现基本元素


设置形状101

这些形状通常在日常使用中已有名称。它们是一个盒子(或长方体),一个球体,一个圆柱体,一个圆锥体,正多边形,一个平面和一个称为地面的专家水平面。稍微不为人知,但也包括在一组形状的圆环,圆环结和多面体。您将不得不等待下一部分学习如何创建没有日常名称但通过数据集和参数形成的形状。这些被称为参数形状。

在101课程中,您只能遇到有限数量的设定形状,从此页面开始,包括方框,球体,平面和地面。此外,您将使用MeshBuilder形状创建方法而不是旧的传统Mesh方法。如何使用任一方法创建所有设置形状,并通过 进一步阅读找到两者的优点和缺点。

MeshBuilder方法

创建设置形状的一般形式是:

var shape = BABYLON.MeshBuilder.CreateShape(名称,选项,场景);

options参数允许您执行诸如设置形状大小和设置是否可以更新它之类的操作。具体例子如下。

var box = BABYLON.MeshBuilder.CreateBox("box", {}, scene); // default box

var myBox = BABYLON.MeshBuilder.CreateBox("myBox", {height: 5, width: 2, depth: 0.5}, scene);

选项 默认值
尺寸 (数字)每个盒子边的大小 1
高度 (数字)高度大小,覆盖大小属性 尺寸
宽度 (数字)宽度大小,覆盖大小属性 尺寸
深度 (数字)深度大小,覆盖大小属性 尺寸
faceColors (Color4 []) 6 Color4数组,每个框面一个 每侧为Color4(1,1,1,1)
faceUV (Vector4 []) 6个Vector4数组,每个框面一个 每侧UV(0,0,1,1)
更新 (boolean)如果网格是可更新的,则为true
sideOrientation (数字)侧面方向 DEFAULTSIDE


var sphere = BABYLON.MeshBuilder.CreateSphere("sphere", {}, scene); //default sphere

var mySphere = BABYLON.MeshBuilder.CreateSphere("mySphere", {diameter: 2, diameterX: 3}, scene);
选项 默认值
(数字)水平段的数量 32
直径 (数字)球体的直径 1
diameterX (数字) X轴上的直径,覆盖直径属性 直径
diameterY (数字) Y轴上的直径,覆盖直径属性 直径
diameterZ (数字) Z轴上的直径,覆盖直径属性 直径
(数字)周长(纬度)在0和1之间的比率 1
切片 (数字)高度(经度)在0和1之间的比率 1
更新 (boolean)如果网格是可更新的,则为true
sideOrientation (数字)侧面方向 DEFAULTSIDE

平面

var plane = BABYLON.MeshBuilder.CreatePlane("plane", {}, scene); // default plane

var myPlane = BABYLON.MeshBuilder.CreatePlane("myPlane", {width: 5, height: 2}, scene);
选项 默认值
尺寸 (数字)飞机的侧面尺寸 1
宽度 (数字)宽度的大小 尺寸
高度 (数字)高度的大小 尺寸
更新 (boolean)如果网格是可更新的,则为true
sideOrientation (数字)侧面方向 DEFAULTSIDE
frontUVs (Vector4 []) Vector4的数组,仅当sideOrientation:BABYLON.Mesh.DOUBLESIDE设置时 Vector4(0,0, 1,1)
backUVs (Vector4 []) Vector4的数组,仅当sideOrientation:BABYLON.Mesh.DOUBLESIDE设置时 Vector4(0,0, 1,1)
sourcePlane (平面)源平面(数学)将网格转换为 空值

sourcePlane是平面网格的唯一选项,并提供了一种定位和定位平面网格的方法。现在只考虑它在创建时的方向是向量(0,0,1)。现在,您希望方向为矢量(0,-1,1),然后使用创建源平面

var sourcePlane = new BABYLON.Plane(0, -1, 1, 0);
sourcePlane.normalize();

这将创建一个数学平面,用作方向源。第四个参数是在方向矢量方向上移动的距离。在这个阶段留下0

有关源平面的更多信息

地面

var ground = BABYLON.MeshBuilder.CreateGround("ground", {}, scene); //default ground

var myGround = BABYLON.MeshBuilder.CreateGround("myGround", {width: 6, height: 4, subdivisions: 4}, scene);
选项 默认值
宽度 (数字)宽度的大小 1
高度 (数字)高度的大小 1
更新 (boolean)如果网格是可更新的,则为true
细分 (数字)方形细分数 1

CreateGround的一个变体是CreateGroundFromHeightMap 它允许您形成起伏的地面而不是平面。

面部颜色或紫外线

这仅适用于有限数量的具有不同面的网格,例如框,但不是球体。这允许您为这些网格的每个面赋予单独的颜色或图像。了解脸部颜色和紫外线。.

可更新

如果网格的可更新参数设置为true,则意味着可以更改与网格的每个顶点关联的数据,从而改变网格的形状。有关更多信息,请参阅如何更新顶点

侧面定位

侧面方向选项用于更改网格的每一面的查看方式。

此选项有四个可能的值:

  • BABYLON.Mesh.FRONTSIDE,
  • BABYLON.Mesh.BACKSIDE,
  • BABYLON.Mesh.DOUBLESIDE,
  • BABYLON.Mesh.DEFAULT which is the default value and equals FRONTSIDE currently.

在以下示例中,您可以通过左右移动屏幕指针来旋转平面,从而在DEFAULT和DOUBLESIDE之间进行比较。

正面和背面UV

当网格具有sideOrientation选项并且设置为DOUBLESIDE时,正面和背面可以显示不同的图像。有关更多信息,请参阅如何显示正面和背面图像

快来了

创建网格时,它始终以原点为中心并与轴对齐。你会想要给它一个不同的位置和轮换。如果您不能等待,请跳过下一步并转到何更改位置和旋转

下一步

既然你已经掌握了一些固定的形状,那么就可以了解一下 Shapes Less Set in Their Ways

进一步阅读

基本 - L1

如何使用MeshBuilder创建设置形状
如何创建设置形状遗留方法的
优点和缺点