在WebGL中创建自己的FPS:3建模简单对象
建模简单对象
在这里,我们有一个场景,中间有一个地板和一个球体。太好了!但是我们并不真正了解我们所开发的全部功能。我们将在这里进行剖析并逐步了解对象的工作方式。您还将探索一些转换功能。最后,我们将前往基础材料的神奇世界。来吧,是时候开始了!
基本网格
在开始任何操作之前,删除两个对象 sphere
和 ground
:我们将一起重做舞台。最后,您的文件 Arena.js
应如下所示:
可以在BabylonJS中用一行代码创建许多基本的网格。我们将研究最重要的:地面,正方形,球形,圆柱体。其他对象的结构极为相似。
如果对网格的实现方式有疑问,可以转到BabylonJS的文档。
对象参数
所有对象都有共同的属性,在此处总结如下:
-
name
对应于将是对象ID的字符串。 -
size
对应于对象的大小。 -
scene
是将在其中创建对象的场景。 -
updatable
指示是否在创建网格后对其进行修改(更改网格的大小或属性)。其值为true或false。 -
orientation
对应于将显示面的方向。 -
subdivision
表示对象的详细程度(此值越大,对象越详细。
对象的脸仅向外渲染(BABYLON.Mesh.DEFAULTSIDE
)。如果您查看一个对象内部,则该对象似乎消失了,好像它不再存在。要扭转这种情况,请BABYLON.Mesh.BACKSIDE
在 指示 subdivision
。
理由
要创建计划,以下是相应的代码:
-
width
允许指示平面的宽度。 -
depth
允许指示平面的深度。
立方体
添加多维数据集的行如下:
球体
使用以下几行创建球体:
segments
例如 subdivision
,如果数量很多,则可以提高对象的质量。该数字对应于圆的段数。
油缸
圆柱的创建是此处四个对象中最复杂的。这是代码:
-
height
调整圆柱体的高度。 -
diamTop
更改列顶部的圆的宽度。 -
diamBottom
更改列底部圆的宽度。 -
tesselation
与一样subdivision
,调整渲染对象的质量。
通过这四个目标,我们将实现以下目标:
我看到了如何创建对象,但是我们还没有看到如何放置它们或向它们添加材料!
我们来了!首先创建对象,放置它们,然后我们将为它们添加材料。
第一个竞技场!
首先创造土壤。取回上面创建的内容,您将影响20宽深的土壤。
注意将要创建的网格物体放在文件中我们上面定义的灯光下方 Arena.js
。
最后,让我们添加圆柱体。它的高度将为20,顶部和底部的直径将为5,细分中的镶嵌将为20,细分为5。
这些数字不是固定的。尝试不同的组合以了解它们对网格的影响!
刷新您的网页,结果应如下所示:
由于它们都在同一位置,因此通常只看到平面和圆柱体。现在,您将它们放置在场景中。
场景中网格的定位
使用Vector3修改网格的三种类型(我想提醒您,Vector3是X,Y,Z中的坐标):
-
position
:谁将移动网格 -
rotation
:将旋转网格以弧度定义的角度 -
scaling
:将乘以网格的大小
为了观察每个修改器对我们的网格的影响,我们将分别使用它们。
地线
Arena.js
本节的最终代码 应如下所示:
再次,您可以看到该函数 clone()
通过material
与克隆对象共享声音而节省了我们的代码行 。这样,您只需为所有Box定义一次材质即可。
你去!我们的对象被创建并放置在具有非常漂亮纹理的平面上!乐于修改我们在这里的内容!您必须很好地理解这些转换,因为它们会出现在我们游戏的每个角落。
快来看灯和摄像机,现在该看看我们可以用它做什么!