当前位置: 首页 > 网络应用技术

我如何使用三分Js在三维世界中建造房屋(详细的教程)

时间:2023-03-09 02:15:53 网络应用技术

  在过去的两天中,我画了一间带有3.js的3D房屋,然后放了一张床。您可以使用鼠标和键盘来控制运动。有3D游戏的视觉感。

  本文涉及实施原则。

  代码地址:https://github.com/quarkgluonplasma/threejs-earcerize

  让我们不用担心首先编写代码,让我们先分析下一个想法。

  这样的房子实际上是从几何形状中堆积的:

  有这样的几何形状:

  地板是一架飞机。您可以使用平面测量法(平面几何形状)绘制它,并贴上纹理图。

  两侧的壁是不规则的形状。这可以与挤出测定法一起使用。它支持用刷子绘制2D路径,然后增厚至3D。

  以同样的方式,后壁也很简单。它可以通过拳击测量法(立方体)或挤出测定法(挤压结合)首先绘制形状,然后变为3D。

  前壁稍微复杂一些,也是不规则的。您可以使用挤出测定法来绘制形状,然后成为3D,但还有两个孔。您需要画两个孔,并在形状上添加两个孔。

  门框和窗框还屈曲为形状,二次限制计变成3D。

  屋顶呢?屋顶上没有什么特别的,但是立方体旋转一定角度。它可以用拳击测量法绘制。

  接下来,将不同的图片贴在墙壁,屋顶和地板上,并设置不同的位置以组装房屋。

  那床呢?

  Trix.js提供了许多可以绘制一些简单对象的几何体,但是很难绘制复杂的对象。这样的对象通常使用专业的3D建模软件来绘制FPX或OBJ格式文件。Three.js已加载和渲染。

  我们在网上找到了3D型号的3D型号。我找到了FBX格式,然后将其加载给了Trix.js的FBXLoader。

  仍然有一只草,这也是一架飞机。它用平面测定法(平面几何形状)绘制,但相对较长且宽度。

  看起来像雾?

  没错,确实设置了雾(雾),三个。。

  所有对象都完成。接下来,您可以在3D场景中漫游。您可以改变方向并向后,左右移动。这种交互使用FirstPersonControls(第一人称控制器)来实现。

  通常,我们经常使用OrbitsControls,它像卫星一样支持将相机旋转在物体周围。但是我们不想转身,而是在键盘和鼠标控制的左右移动。

  我们简单地总结:

  将三个js添加到三个维度坐标系中,以组装到不同的3D场景中。在它们中,可以绘制简单的对象,将使用建模软件绘制复杂的对象,然后加载到场景中。控制摄像机运动以实现不同的交互作用,例如铁路控制器,第一人组控制器等。

  房屋的墙壁,地板和屋顶可以用拳击测量法(立方体),挤压测定法(挤压几何体)绘制,但床很复杂,模型文件将直接加载。

  它可以通过FistpersonControls控制3D游戏的感觉,以控制互动。

  这个想法很清楚,然后我们专门写下代码:

  首先画草,即一架大平面,将草放在草地上。

  三维对象(网格)由几何形状组成,加上材料。我们创建一个平面几何(平面测定法),并在长度和宽度上形成较大的价值,例如10,000形成材料。在您可以创建草原之后。

  纹理图应在两个方向上重复,重复的数量为100次。

  然后旋转草的平面。

  添加一些雾使天空变得模糊:

  指定的颜色为白色,雾之间的距离为10至1500。

  下一步是创建房屋。房屋由地板,两侧的墙壁,前壁,门后壁,门框窗框,屋顶和床组成。我们必须单独创建每个部分。

  创建地板也是平面几何形状(平面测量学)。只需贴上木地图,然后设置较低的位置:

  要在侧面创建墙壁,请使用挤出测定法来绘制,即首先绘制2D形状,然后挤入3D。还将墙壁的质地粘贴到3D中。

  两个侧壁只是不同的位置,Z轴的位置仅是位置:

  顺便说一句,如果您不确定该位置,则可以在场景中添加坐标系辅助工具(Axishelper)。

  然后是后墙。这种形状更简单,这是一个矩形:

  接下来是前壁。除了绘制形状外,还有两个孔:

  形状只有两个孔,绘画复杂,其余的纹理,材料和位置是相同的。

  门和窗户也被绘制出形状,拉一个孔,然后添加一些厚度为3D:

  颜色设置为银色。

  门框相同:

  下一

  屋顶上的六个面条不同。一个用瓷砖放置的贴纸之一,其余的设置为灰色以模拟水泥的效果。在它们的情况下,必须旋转瓷砖的纹理,并将重复的数量设置在两个方向上。

  下一个床很简单,因为您不需要自己绘制它,只需加载现有型号即可。这种复杂的模型通常由专业建模软件绘制。

  然后将光设置为环境光,即每个方向的光强度相同。

  创建相机并使用透视相机,即近距离和远处的透视效果:::

  指定的角度为60度,宽度比,从0.1到1000的距离。

  创建渲染器并使用requestAnimationFrame渲染帧:

  接下来,您需要支持3D场景中的漫游。这无需自己做。Trix.js提供了很多控制器。它具有不同的相互作用效果。其中,有一个第一个组件控制器。这种交互作用控制着前后,左右,通过W,S,A和D键,并通过鼠标控制方向。

  我们指定转换方向的速度。看起来更弯曲,运动速度运动,禁止垂直旋转。

  然后,必须更新每个帧以查看屏幕,它已经通过了多长时间的时钟,然后更新了控制器。

  查看最终效果:

  所有代码均已上传到GitHub:

  代码地址:https://github.com/quarkgluonplasma/threejs-earcerize

  本文编写了三分之一绘制3D房屋的实施原则。

  三。js通过场景管理各种对象,可以在对象之间分组。该对象由两个部分组成:几何和材料。该房屋由多种几何形状组成,例如拳击几何和挤压几何形状(挤出地图)。有不同的纹理纹理,以及位置和旋转角度。

  其中,越多的是挤出测定法(挤压几何体)。它在两个维平面中绘制形状,然后“挤压”成三维形式。它也可以屈从于形状。

  房子里有一张床。这个复杂的对象更难用三js绘制。通常,这是一个专业的建模软件,例如绘制的搅拌机,然后加载并用三个。

  视角的改变实际上是相机位置和方向的变化。Trix.js提供了各种控制器,例如OrbitsControls,FirstPersonControls(第一人称控制器)。

  我们希望在此处控制键盘的正面和背面,并且可以通过FirstPersonControls来控制通过鼠标转向的相互作用。

  三人JS仍然很有趣。它可以主要用于可视化和业务中的游戏,但是您也可以使用它来做一些有趣的事情。