69. 创建一个多面体

本教程翻译自官方教程Create Polyhedra,各位也可以进入本站镜像站点查看

本文目录

  1. 如何创建多面体
    1. 多面体
      1.多面体的类型
    2. 自定义多面体
    3. 正多面体
    4. 可更新的形状
  2. 延伸阅读
    1. 中等难度 - L2

如何创建多面体 How To Create Polyhedra

我们通过设置type(0-14) 就可以简单的创建出15个多面体,按名称创建的正多面体可以得到更多的形状。然而,我们按照这个说明Custom Polyhedra,我们还可以创建更多

多面体 Polyhedron

var octahedron = BABYLON.MeshBuilder.CreatePolyhedron("oct", {type: 1, size: 3}, scene);
选项 值类型&说明 默认值
type (number) 多面体的类型范围[0-14] 0
size (number) 多面体的大小 1
sizeX (number) X方向的大小,覆盖size 1
sizeY (number) Y方向的大小,覆盖size 1
sizeZ (number) Z方向的大小,覆盖size 1
custom (polygonObjectReference) 一个多面体对象,覆盖type null
faceColors (Color4[]) 每一面的颜色 Color4(1,1,1,1)
faceUV (Vector4[]) array of Vector4, one per face UVs(0, 0, 1, 1)
flat (boolean) true
updatable (boolean) 是否可更新 false
sideOrientation (number) 可以看到的面 DEFAULTSIDE

为了更好的理解 faceUVfaceColors,请移步Face Colors and Textures for a Box
可以尝试设置多个面的形状,不要只局限于六面体。

多面体的类型 Polyhedron Types

类型 名称 面数
0 Tetrahedron 4
1 Octahedron 8
2 Dodecahedron 12
3 Icosahedron 20
4 Rhombicuboctahedron 26
5 Triangular Prism 5
6 Pentagonal Prism 7
7 Hexagonal Prism 8
8 Square Pyramid (J1) 5
9 Pentagonal Pyramid (J2) 6
10 Triangular Dipyramid (J12) 6
11 Pentagonal Dipyramid (J13) 10
12 Elongated Square Dipyramid (J15) 12
13 Elongated Pentagonal Dipyramid (J16) 15
14 Elongated Pentagonal Cupola (J20) 22

自定义多面体 Custom Polyhedra

如果需要使用自定义多面体可以访问https://playground.cnbabylon.com/#2A16BF

通过“设置”下的“编辑器取消勾选”复选框将“代码编辑器”最小化,并注意鼠标指针下的多面体名称。每个名称的数据都可以在这里的polyhedra.js文件中找到https://github.com/BabylonJS/Extensions/tree/master/Polyhedron
查找名称并在代码中复制/粘贴所需的多面体对象,如下所示

var heptagonalPrism = { "name":"Heptagonal Prism", "category":["Prism"], "vertex":[[0,0,1.090071],[0.796065,0,0.7446715],[-0.1498633,0.7818315,0.7446715],[-0.7396399,-0.2943675,0.7446715],[0.6462017,0.7818315,0.3992718],[1.049102,-0.2943675,-0.03143449],[-0.8895032,0.487464,0.3992718],[-0.8658909,-0.6614378,-0.03143449],[0.8992386,0.487464,-0.3768342],[0.5685687,-0.6614378,-0.6538232],[-1.015754,0.1203937,-0.3768342],[-0.2836832,-0.8247995,-0.6538232],[0.4187054,0.1203937,-0.9992228],[-0.4335465,-0.042968,-0.9992228]],
"face":[[0,1,4,2],[0,2,6,3],[1,5,8,4],[3,6,10,7],[5,9,12,8],[7,10,13,11],[9,11,13,12],[0,3,7,11,9,5,1],[2,4,8,12,13,10,6]]};

var mesh = BABYLON.MeshBuilder.CreatePolyhedron("h", {custom: heptagonalPrism}, scene);

正多面体 IcoSphere

这是一个基于二十面体的球体,有20个可细分的三角形面

var icosphere = BABYLON.MeshBuilder.CreateIcoSphere("ico", {radius: 5, radiusY: 8, subdivisions: 6}, scene);
选项 值类型&说明 默认值
radius (number) 半径 1
radiusX (number) X轴的半径,覆盖 radius radius
radiusY (number) Y轴的半径,覆盖 radius radius
radiusZ (number) Z轴的半径,覆盖 radius radius
subdivisions (number) 每一面的各边的分段数 4
flat (boolean) false
updatable (boolean) 是否可更新 false
sideOrientation (number) 可以看到的面 DEFAULTSIDE

正多面体示例:https://playground.cnbabylon.com/#74RNNC/#1
带动画的正多面体https://playground.cnbabylon.com/#74RNNC#2

可更新的 Updatable

当一个多面体形状在其选项中有一个可更新的参数时,这意味着它可以改变与网格的每个顶点相关联的数据,从而改变网格的形状。更多信息请参考https://endoc.cnbabylon.com/how_to/updating_vertices.html

延伸阅读

中等难度 - L2

Set Shapes
Parametric Shapes
Ribbon In Detail
Math Makes Ribbons
Decals

贡献者

翻译: 阿恒 cnblogs
校对: Catherine catherine__long@126.com
技术支持: 吉吉国王 jijiking@office2.cn / Dushusir github

参与贡献? 联系sevice@office2.cn