宝哥软件园

使用三. js绘制三维立方体示例代码

编辑:宝哥软件园 来源:互联网 时间:2021-09-03

简介

Three.js是一个WebGL框架,让我们可以在画布上实现3D效果。3D效果的实现在国内比较新,可供参考的资料不多。本文只是一篇入门文章,介绍了如何绘制一个3D立方体。

三. js中的基本概念

包含三个基本概念:场景、相机和渲染器。

场景是要绘制的对象,摄像机代表视角,渲染器是绘制载体(可以附着在浏览器的DOM元素上),

也就是说,我们通过相机拍摄场景,然后将其绘制到目标介质中。

创建场景、相机和渲染器

var场景=新三。场景();var camera=new THREE。透视摄像机(75,window . inner width/window . inner height,0.1,1000);var渲染器=new THREE。WebGLRenderer();renderer . setsize(window . inner width,window . inner height);document . body . appendchild(renderer . dome element);上面的代码首先创建一个场景,然后创建一个PerspectiveCamera,然后创建一个WebGL的渲染器(注意,Three.js也支持非3D Canvas 2D的渲染器),然后调用它作为HTML文档体的DOM子元素。

介绍完毕后,首先呈现实现的效果图:

这是效果图的实现,是不是挺有立体感的?

绘制前的准备工作

在编写代码之前,您应该下载最新的three.js框架包,并介绍自己的页面。

具体实施过程

准备一块帆布

这个画布就是我们展示整个3D方块的画布,也就是上面的黑框。

!DOCTYPE html html lang=' en ' head meta charset=' UTF-8 ' meta name=' viewport ' content=' width=device-width,Original-scale=1.0 ' meta http-equiv=' x-ua-compatible ' content=' ie=edge ' title camera/title style # canvas { width : 400 px;height: 300pxborder: 1px纯红;margin: 50px自动;显示:块;}/style/head body canvas id=' canvas '/canvas script src=' http :/libs/three . min . js '/script/body/html清晰地画出想法

下面的绘制过程会涉及到很多概念:画布、场景、相机和渲染器。

为了更好地理解绘图过程的代码并帮助记忆,让我们首先了解这些概念:

假设我们现在正在旅行,看到一幅美丽的图片,想记录下这个3D世界

这个美丽的场景就是场景。我们用照相机拍照。为了看清楚这幅画,我们把这幅画放在画布上。最后,我们用渲染器对它进行装饰和渲染,这样我们就可以成功地展示这个3D世界。

【节目还是很贴近生活的】

通过对现实世界的了解,我们将开始编码o(~~)

准备画布、场景、相机和渲染器,并给出初始化方法

scriptvar相机、场景、渲染器、画布;init();function init(){ canvas=document . getelementbyid(' canvas ');}接下来我们需要做的就是完善这个init()方法。

创建三维场景场景

场景是最简单的,只需要用场景声明一个场景对象。

场景=新三。场景();准备好,摄像机

我们在这里设置的摄像机是透视摄像机

相机有四个参数

第一个参数是视线辐射的角度。这个参数越大,我们能看到的视野就越广,物体看起来就越小。第二个参数是图像内容的显示比例:宽/高。我们通常将这个比例设置为与画布的比例相同,这样我们看到的图片就不会失真。第三和第四个参数是摄像机和显示内容(立方体)之间的最近距离和最远距离。相机=新的三。透视摄像机(45,400/300,1,10);接下来,设置摄像机的放置位置,并将摄像机放置在场景场景中

因为我们的世界是3D的,所以摄像头的放置位置也是3D的,涉及到三个参数:X轴、Y轴、Z轴。(0,0,0)是相机的原点,(1,1,5)是将我们的相机向右上方移动一个单位,向后移动五个单位。

ps:这个时候画布帆布的大小正好是正方体的5倍。

camera.position.set(1,1,5);scene.add(摄像机);在场景中添加一个立方体

每个形状都是一个网格,几何可以理解为物体的骨骼材料可以理解为物体的皮囊

再创建一个可填充的形状立方

这样就构成了完整的实物

我们再将这个形状放入场景事件中

立方体几何参数设置为1:1:1表示这是一个正方体,当然可以自行修改比例,变成不一样的立方体

变化几何=新三。立方几何(1,1,1);//添加三自带的最简单的一种材质可变材料=新的三.MeshBasicMaterial({ color:0x ff 0000 });var cube=new THREE .网格(几何、材料);var cube=new THREE .网格(几何、材料);最后,创建渲染器对图像进行渲染

将帆布交给渲染器,也就是一个渲染的容器

抗混叠:真平滑,抗锯齿,输出的画面会进行优化,不会带毛边

渲染器=新的三.WebGLRenderer({ canvas : canvas,anti IAS : true });//设置渲染器的样式renderer.setSize(canvas.width,canvas。高度);renderer.render(场景、摄像机);经过以上步骤,我们的的正方体就成功创建好了。

以下是本例完整代码:

!DOCTYPE html html lang=' en ' head meta charset=' UTF-8 ' meta name=' viewport ' content=' width=device-width,initial-scale=1.0 ' meta http-equiv=' X-UA-Compatible ' content=' ie=edge ' title camera相机/title style # canvas { width : 400 px;高: 300pxborder: 1px纯红;余量: 50px自动;显示:块;}/style/head body canvas id=' canvas '/canvas script src=' http :/libs/三。量滴js '/脚本脚本var摄像机、场景、渲染器、画布;init();函数init(){ canvas=document。getelementbyid(' canvas ');场景=新三。场景();相机=新的三。透视摄像机(45,400/300,1,10);camera.position.set(1,1,5);scene.add(摄像机);变化几何=新三。立方几何(1,1,1);可变材料=新的三.MeshBasicMaterial({ color:0x ff 0000 });//多维数据集是一个可以填充的形状var cube=new THREE .网格(几何、材料);scene.add(立方体);渲染器=新的三.WebGLRenderer({ //将帆布交给渲染器一个渲染的容器canvas:画布,//平滑,抗锯齿输出的画面会进行优化,不会带毛边抗混叠: true });//设置渲染器的样子renderer.setSize(canvas.width,canvas。高度);renderer.render(场景、摄像机);}/脚本/正文/html总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

更多资讯
游戏推荐
更多+