69. 创建一个多面体
69. 创建一个多面体
本教程翻译自官方教程Create Polyhedra,各位也可以进入本站镜像站点查看
本文目录
如何创建多面体 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 |
为了更好的理解 faceUV
和 faceColors
,请移步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