背景
hello world就是放基本的模型元素,正方体、球、面、线等等。
物体
box
立方体
var box = BABYLON.MeshBuilder.CreateBox("box", {}, scene);
选型 | 值 | 默认值 |
---|---|---|
size | 盒子边长大小 | 1 |
height | 盒子高度,写了size就没用了 | size |
width | 盒子宽度, 写了size就没用了 | size |
depth | 盒子深度, 写了size就没用了 | size |
faceColors | (Color4[]) 盒子6个面的颜色,是一个6个元素的Color4数组 | 每个面默认白色Color4(1, 1, 1, 1) |
faceUV | (Vector4[]) 盒子6个面的法向量 | 默认法向量UVs(0, 0, 1, 1) |
updatable | 这个网格是否可以更新 | false 不可以更新,就是不可以改变其属性 |
sideOrientation | (number) 盒子绘里面,还是外面 | DEFAULTSIDE |
常规的就size, width, height, depth, 当后三者配置了之后,size无效。
球
球
var sphere = BABYLON.MeshBuilder.CreateSphere("sphere", {}, scene); //默认的球
选型 | 值 | 默认值 |
---|---|---|
segments | 细分段数 | 32 |
diameter | 圆的半径 | 1 |
diameterX | x轴径大小, 如果写了会重写diameter参数 | diameter |
diameterY | y轴径大小, 如果写了会重写diameter参数 | diameter |
diameterZ | z轴径大小, 如果写了会重写diameter参数 | diameter |
arc | 这是一个比较难的参数,建议你想放弃理解 | 1 |
slice | 同上 | 1 |
updatable | 这个网格是否可以更新,false 不可以更新,就是不可以改变其属性 | false |
sideOrientation | (number) 盒子绘里面,还是外面 | DEFAULTSIDE |
正常的用diameter就可以了,表示球形半径。各个维度会覆盖diameter。
其中,还有另外一个库可以表示球。Mesh, 我理解的是Mesh可像是MeshBuilder的简化版。最后讲,目前都按MeshBuilder操作。
平面
var plane = BABYLON.MeshBuilder.CreatePlane("plane", {}, scene);
选型 | 值 | 默认值 |
---|---|---|
size | 平面的长、宽大小 | 1 |
width | 单独设置平面的长 | size |
height | 单独设置平面的宽 | size |
updatable | 这个网格是否可以更新 | false |
sideOrientation | 盒子绘里面,还是外面 | DEFAULTSIDE |
frontUVs | 正面的法向量数组 | Vector4(0,0, 1,1) |
backUVs | (Vector4[]) 背面的法向量数组 | Vector4(0,0, 1,1) |
sourcePlane | (Plane) source plane (maths) the mesh will be transformed to | null |
地面
var ground = BABYLON.MeshBuilder.CreateGround("ground", {}, scene);
CreateGround(name: string, options: { height?: number; subdivisions?: number; subdivisionsX?: number; subdivisionsY?: number; updatable?: boolean; width?: number }, scene?: Nullable<Scene>): Mesh
问题
plane和ground的区别
两者没有明显的区别,plane的配置项更多一些。
MeshBuilder和Mesh的区别
看了两者的接口文档,貌似是差不多的,MeshBuilder更加简单。按顺序放置了配置项。
比如createBox Mesh中
/**
* Creates a sphere mesh. Please consider using the same method from the MeshBuilder class instead
* @param name defines the name of the mesh to create
* @param segments sets the sphere number of horizontal stripes (positive integer, default 32)
* @param diameter sets the diameter size (float) of the sphere (default 1)
* @param scene defines the hosting scene
* @param updatable defines if the mesh must be flagged as updatable
* @param sideOrientation defines the mesh side orientation (https://doc.babylonjs.com/babylon101/discover_basic_elements#side-orientation)
* @returns a new Mesh
*/
MeshBuilder中
size?: number;
width?: number;
height?: number;
depth?: number;
faceUV?: Vector4[];
faceColors?: Color4[];
sideOrientation?: number;
frontUVs?: Vector4;
backUVs?: Vector4;
wrap?: boolean;
topBaseAt?: number;
bottomBaseAt?: number;
updatable?: boolean;
}, scene?: Nullable<Scene>): Mesh;
/**
* Creates a tiled box mesh
* * faceTiles sets the pattern, tile size and number of tiles for a face
* * The mesh can be set to updatable with the boolean parameter `updatable` (default false) if its internal geometry is supposed to change once created
* @param name defines the name of the mesh
* @param options defines the options used to create the mesh
* @param scene defines the hosting scene
* @returns the tiled box mesh
*/
所以,这其实是一个,是要用的时候查文档,还是记住几个最常用的配置项的问题。 代码的写法选择一种就行。
其他元素
上面说了最简单的四个。还有其他很多的,但是不常用。
- CreateBox
- CreateCapsule
- CreateCylinder
- CreateDashedLines
- CreateDecal
- CreateDisc
- CreateGround
- CreateGroundFromHeightMap
- CreateIcoSphere
- CreateLathe
- CreateLineSystem
- CreateLines
- CreatePlane
- CreatePolygon
- CreatePolyhedron
- CreateRibbon
- CreateSphere
- CreateTiledBox
- CreateTiledGround
- CreateTiledPlane
- CreateTorus
- CreateTorusKnot
- CreateTube
- ExtrudePolygon
- ExtrudeShape
- ExtrudeShapeCustom
自己看吧 回头用到的再整理。 上班了上班了。
参考: www.babylonjs.com.cn/babylon101/… blog.csdn.net/hahhh11/art… www.hellodemos.com/hello-babyl…