【babylonjs】babylonjs实践(五)--基础的模型

1,234 阅读3分钟

背景

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
diameterXx轴径大小, 如果写了会重写diameter参数diameter
diameterYy轴径大小, 如果写了会重写diameter参数diameter
diameterZz轴径大小, 如果写了会重写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 tonull

地面

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

Create​Ground(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
     */

所以,这其实是一个,是要用的时候查文档,还是记住几个最常用的配置项的问题。 代码的写法选择一种就行。

其他元素

上面说了最简单的四个。还有其他很多的,但是不常用。

自己看吧 回头用到的再整理。 上班了上班了。

参考: www.babylonjs.com.cn/babylon101/… blog.csdn.net/hahhh11/art… www.hellodemos.com/hello-babyl…