2024年最新Three.js零基础入门教程(超详细)一本地搭建Threejs官方文档网站1.官网地址Github

1.为项目创建一个目录,并在项目根目录下执行

npmcreatevite@latest2、APP.vue

//两个参数分别为几何体geometry、材质materialconstmesh=newTHREE.Mesh(geometry,material);//网格模型对象Mesh模型位置.position实际生活中,一个物体往往是有位置的,对于threejs而言也是一样的,你可以通过位置属性.position定义网格模型Mesh在三维场景Scene中的位置。

constmesh=newTHREE.Mesh(geometry,material);//网格模型对象Mesh//设置网格模型在三维空间中的位置坐标,默认是坐标原点mesh.position.set(0,10,0);.add()方法在threejs中你创建了一个表示物体的虚拟对象Mesh,需要通过.add()方法,把网格模型mesh添加到三维场景scene中。

scene.add(mesh);后续内容写到这里,我知道你已经迫不及待想执行代码看看渲染效果了,那么你需要看看后面两节课关于相机Camera和渲染器Renderer的介绍

Threejs如果想把三维场景Scene渲染到web网页上,还需要定义一个虚拟相机Camera,就像你生活中想获得一张照片,需要一台用来拍照的相机。

透视投影相机PerspectiveCamera本质上就是在模拟人眼观察这个世界的规律。

//实例化一个透视投影相机对象constcamera=newTHREE.PerspectiveCamera();相机位置.posiiotn生活中用相机拍照,你相机位置不同,拍照结果也不同,threejs中虚拟相机同样如此。

比如有一间房子,你拿着相机站在房间里面,看到的是房间内部,站在房子外面看到的是房子外面效果。

相机对象Camera具有位置属性.posiiotn,通过位置属性.posiiotn可以设置相机的位置。

//相机在Three.js三维坐标系中的位置//根据需要设置相机位置具体值camera.position.set(200,200,200);相机观察目标.lookAt()你用相机拍照你需要控制相机的拍照目标,具体说相机镜头对准哪个物体或说哪个坐标。对于threejs相机而言,就是设置.lookAt()方法的参数,指定一个3D坐标。

你可以把三维场景中长方体mesh想象为一个房间,然后根据相机位置和长方体位置尺寸对比,判断两者相对位置。你可以发现设置相机坐标(200,200,200),位于长方体外面一处位置。

你生活中相机拍照的照片是有大小的,对于threejs而言一样,需要定义相机在网页上输出的Canvas画布(照片)尺寸,大小可以根据需要定义,这里先随机定义一个尺寸。

Canvas画布

//定义相机输出画布的尺寸(单位:像素px)constwidth=800;//宽度constheight=500;//高度透视投影相机PerspectiveCamera:视锥体透视投影相机的四个参数fov,aspect,near,far构成一个四棱台3D空间,被称为视锥体,只有视锥体之内的物体,才会渲染出来,视锥体范围之外的物体不会显示在Canvas画布上。

//width和height用来设置Three.js输出的Canvas画布尺寸(像素px)constwidth=800;//宽度constheight=500;//高度//30:视场角度,width/height:Canvas画布宽高比,1:近裁截面,3000:远裁截面constcamera=newTHREE.PerspectiveCamera(30,width/height,1,3000);PerspectiveCamera参数介绍:

THREE.AxesHelper()的参数表示坐标系坐标轴线段尺寸大小,你可以根据需要改变尺寸。

通过模型的位置、尺寸设置,加深3D坐标系的概念。

测试:设置长方体xyz不同方向尺寸

//设置几何体长宽高,也就是x、y、z三个方向的尺寸//对比三个参数分别对应xyz轴哪个方向newTHREE.BoxGeometry(100,60,20);测试:改变位置

相机放在x轴负半轴,目标观察点是坐标原点,这样相当于相机的视线是沿着x轴正方向,只能看到长方体的一个矩形平面。

camera.position.set(-1000,0,0);camera.lookAt(0,0,0);//相机视线沿着x轴负半轴,mesh位于相机后面,自然看不到camera.position.set(-1000,0,0);camera.lookAt(-2000,0,0);相机far偏小,mesh位于far之外,物体不会显示在画布上。

实际生活中物体表面的明暗效果是会受到光照的影响,比如晚上不开灯,你就看不到物体,灯光比较暗,物体也比较暗。在threejs中,咱们用网格模型Mesh模拟生活中物体,所以threejs中模拟光照Light对物体表面的影响,就是模拟光照Light对网格模型Mesh表面的影响。

你可以打开课件中案例源码,对比有光照和无光照两种情况,网格模型Mesh表面的差异。

threejs提供的网格材质,有的受光照影响,有的不受光照影响。

一个立方体长方体使用MeshLambertMaterial材质,不同面和光线夹角不同,立方体不同面就会呈现出来不同的明暗效果。

//点光源:两个参数分别表示光源颜色和光照强度//参数1:0xffffff是纯白光,表示光源颜色//参数2:1.0,表示光照强度,可以根据需要调整constpointLight=newTHREE.PointLight(0xffffff,1.0);除了通过THREE.PointLight的参数2设置光照强度,你可以可以直接访问光照强度属性.intensity设置。

pointLight.decay=0.0;//设置光源不随距离衰减【扩展提醒】:如果使用默认衰减2.0,不同版本可能有差异,对于部分threejs新版本,有时候你可能看不到光源效果,这时候可以把光照强度加强试试看,如果你的版本不影响,就不用加强光照强度(根据版本情况灵活对应)。

注意光源位置尺寸大小:如果你希望光源照在模型的外表面,那你就需要把光源放在模型的外面。

scene.add(pointLight);//点光源添加到场景中设置好上面所有代码,你现在可以执行代码,用浏览器查看渲染效果。

pointLight.position.set(400,200,300);相机控件OrbitControls平时开发调试代码,或者展示模型的时候,可以通过相机控件OrbitControls实现旋转缩放预览效果。

你可以打开课件案例源码测试下效果。

相机,让哪一个相机围绕目标运动。默认目标是原点。立方体在原点处。

渲染的画布dom对象,用于监听鼠标事件控制相机的围绕运动。

OrbitControls本质上就是改变相机的参数,比如相机的位置属性,改变相机位置也可以改变相机拍照场景中模型的角度,实现模型的360度旋转预览效果,改变透视投影相机距离模型的距离,就可以改变相机能看到的视野范围。

预览观察:可以借助相机控件OrbitControls旋转缩放三维场景便于预览点光源位置

//光源辅助观察constpointLightHelper=newTHREE.PointLightHelper(pointLight,10);scene.add(pointLightHelper);改变点光源位置,观察光照效果变化。

//对比不同入射角,mesh表面对光照的反射效果directionalLight.position.set(100,0,0);directionalLight.position.set(0,100,0);directionalLight.position.set(100,100,100);directionalLight.position.set(100,60,50);//directionalLight.target默认指向坐标原点动画渲染循环threejs可以借助HTML5的API请求动画帧window.requestAnimationFrame实现动画渲染。

//requestAnimationFrame实现周期性循环执行//requestAnimationFrame默认每秒钟执行60次,但不一定能做到,要看代码的性能leti=0;functionrender(){i+=1;console.log('执行次数'+i);requestAnimationFrame(render);//请求再次执行函数render}render();备注说明:对于部分高刷新率的电脑硬件设备,.requestAnimationFrame每秒钟默认调用函数执行次数也是有可能超过60次的,比如你的电脑显卡、显示器等硬件能够支持144hz刷新频率,.requestAnimationFrame的每秒执行上限,也可以接近144帧率。

动画说白了就是一张张照片,连起来依次展示,这样就形成一个动画效果,只要帧率高,人的眼睛就感觉不到卡顿,是连续的视频效果。

threejs渲染输出的结果就是一个Cavnas画布,canvas画布也是HTML的元素之一,这意味着three.js渲染结果的布局和普通web前端习惯是一样的。

通过renderer.domElement属性可以访问threejs的渲染结果,也就是HTML的元素canvas画布。

你可以把threejs的渲染结果renderer.domElement,插入到web页面上任何一个元素中,只要符合你项目的布局规则即可。

设置渲染器锯齿属性.antialias的值可以直接在参数中设置,也可通过渲染器对象属性设置。

constrenderer=newTHREE.WebGLRenderer({antialias:true,});或

注意:注意你的硬件设备设备像素比window.devicePixelRatio刚好是1,那么是否执行.setPixelRatio()不会有明显差异,不过为了适应不同的硬件设备屏幕,通常需要执行该方法。

学习dat.gui.js也不仅仅是为了学习dat.gui.js,也是建立一种思想,就是threejs三维空间的很多参数,不是心算出来的,往往需要可视化的方式调试出来。

你可以通过npm或github方式获得dat.gui.js库,当然为了学习方便,threejs官方案例扩展库中也提供了gui.js,你可以直接使用。

格式:.add(控制对象,对象具体属性,其他参数)

其他参数,可以一个或多个,数据类型也可以不同,gui会自动根据参数形式,自动生成对应的交互界面。

参数3和参数4,分别是一个数字,交互界面是一个鼠标可以拖动的拖动条,可以在一个区间改变属性的值

执行gui.add(obj,'x',0,100);你可以发现右上角gui界面增加了新的内容,可以控制obj对象x属性的新交互界面。

光源对象具有一个光照强度属性.intensity,可以通过gui拖动条改变该属性。

gui.add(mesh.position,'x',0,180);gui.add(mesh.position,'y',0,180);gui.add(mesh.position,'z',0,180);gui调试界面2-颜色命名等给大家介绍gui.js库更多的方法。

.add()创建的交互界面,会默认显示所改变属性的名字,为了通过交互界面更好理解你改变的某个对象属性,你可以通过.name()方法改变gui生成交互界面显示的内容。

constobj={color:0x00ffff,};//.addColor()生成颜色值改变的交互界面gui.addColor(obj,'color').onChange(function(value){mesh.material.color.set(value);});gui调试3-下拉菜单、单选框前面大家学过通过.add()方法可以添加一个拖动条用来改变对象的某个属性,本节课给大家介绍.add()方法创建新的UI交互界面,比如下拉菜单、单选框。

格式:add(控制对象,对象具体属性,其他参数)

gui.add(obj,'bool').name('旋转动画');//渲染循环functionrender(){//当gui界面设置obj.bool为true,mesh执行旋转动画if(obj.bool)mesh.rotateY(0.01);renderer.render(scene,camera);requestAnimationFrame(render);}render();gui.js库(分组)当GUI交互界面需要控制的属性比较多的时候,为了避免混合,可以适当分组管理,这样更清晰。

gui交互界面不分组,只有一个默认的总的菜单。

.addFolder()返回的子文件夹对象,同样具有gui对象的.add()、.onChange()、.addColor()等等属性。

THE END
1.手把手教你搭建一个属于自己的网站对于初学者,如果搭建网站仅用于学习研究,推荐使用价格较为亲民的域名,如 9 元一年的 “www.***.top”。这类域名不仅成本低,适合练手,而且在初期能够满足学习和测试的需求。当然,如果打算长期持有该域名,就需要综合考虑后期续费的价格等因素,选择更适合自己的域名类型,如常见的 “.com”“.net” 等域名虽然好记https://blog.csdn.net/biwenyuna/article/details/143974478
2.网页制作,零基础都可以学!网站建设与网页制作案例教程~网站搭建新手如何零基础快速建站(网站建设完整版) 2018-09-16 php网站源码建设教程-2小时学会完美建站!html基础入门视频教程! 2018-09-14 php网站源码建设教程-网页制作,零基础都可以学!如何制作自己的网站? 2018-09-14 php语言网站搭建流程_怎样制作公司网站?php网站如何搭建?web前端学习_ 2018-09-14 菜鸟学https://m.56.com/c/v106158266.shtml
3.前端工程师零基础个人网站搭建大家好,我是一名前端工程师,我想大多前端工程师都渴望自己独立搭建一个个人网站,不管是出于更多的学习提升自己的核心竞争力,还是想要展示自己建一个个人博客,亦或者是纯粹出于好奇想建站一条龙跑通,反正,就是要自己独立搭建一个网站跑通。你可以说没有以上的想法,反正我有,所以,我就尝试了,最后输入我的网址maramhttps://www.jianshu.com/p/c087f64db166
4.B站上有哪些学习资源?6、【韩语学习】韩语发音&初级会话&日常韩语 https://www.bilibili.com/video/BV1Xs411s76T/ 7、韩语入门【延世大学】-英音-中英CC字幕(完结) https://www.bilibili.com/video/BV1RW411V7J3/ 8、韩语零基础学习韩语入门学习 https://www.bilibili.com/video/BV1Ns411y7Wa/ https://m.douban.com/note/770877638/
5.给零基础自学网站SEO新手的八大建议北京网站建设坚持的去实操才是让学习产生质变的根本,据统计,88%的新手都是没能坚持下来,大多都是三分钟热度,可以多去阅读一些优质的SEO文章,例如A5站长网、站长之家,或者岑辉宇博客上的文章,每天坚持阅读一篇高质量的内容,三个月下来,至少能提升自己的SEO技能。 实操的话,可以搭建网站,根据教程进行关键词布局,从TKD标签开始优化http://www.duomiseo.cn/test/1706.html
6.零基础搭建个性化全攻略网站搭建很难学吗零基础搭建个性化全攻略 从零开始,学习搭建咨询,掌握个性化打造技巧。本文将带你深入了解建设流程,从需求分析到功能实现,助你打造专属。 明确与目标 选择合适的搭建 设计 功能实现 与上线 后期与优化 在时代的大潮中,拥有一家个性化的,对于企业及个人来说,已成为塑造品牌形象、拓展业务版图的关键手段,对于初涉此道的http://www.dachinfoservice.com/wzdj/2384.html
7.零基础学建站,轻松开启您的创作之旅网站搭建与网页制作零基础学建站,轻松开启您的创作之旅 本教程将带领您轻松掌握搭建与创作技巧,助您快速开启个人内容制作之旅,从零开始打造属于自己的专业作品。 挑选适宜的 创建并详尽个人 掌握制作技巧 上传及优化策略 互动交流与推广策略 在互联网高速发展的今天,已成为人们获取资讯、放松休闲的关键途径,在短风头正劲的时代,越来越http://dachtechinfo.com/wz/3330.html
8.零基础搭建个人博客全攻略搭建网站排行从零开始搭建博客,首先选择合适的平台,如WordPress、Hexo等,然后配置域名和服务器,接着学习基本操作,如安装主题、插件等。编写内容时,注意SEO优化,提升博客质量和搜索引擎排名。持续学习,丰富内容,打造个人品牌。 选择博客平台 选购域名与服务器 搭建博客 博客优化与推广 http://www.sanyalaiyunzixun.com/ph/2090.html
9.外贸建站新手教程:从零开始自己搭建外贸网站外贸建站新手教程:从零开始自己搭建外贸网站 通过学习这篇外贸建站教程,即便你是一个完完全全的建站新手,也可学会Wordpress外贸自建站方法,可以快速而简单地创建出一个实用的外贸网站,无需懂得代码编程。 通过此方法做出的网站,虽然不能说是非常专业,但绝对会超过国内七成以上的外贸网站。https://www.yundianseo.com/how-to-build-website/
10.6个网站搭建工具,零基础也能快速上手!详尽的教学视频资源,可系统学习掌握各项功能。 价格较高,月付 13 美元,面向对设计有追求的用户。 以上介绍的这些网站搭建工具,都具有操作简单、功能实用的特点,可以帮助没有技术基础的用户,通过可视化界面快速建立个人网站。根据自己的使用需求,如对设计有更高追求,或者只需要文字博客等,选择合适的平台很重要。希望这些https://js.design/special/article/how-to-build-a-website.html
11.学做网站论坛—从零基础教你如何自己做网站和怎么建网站学做网站论坛通过原创网站制作教程和讲师在线辅导的建站培训方式,从零基础学习怎么做网站以及如何自己做网站的方法,一步步详细讲解网站建设步骤和网站制作知识,最终达到能独立建立自己的网站。https://www.xuewangzhan.com/
12.Java是否适合运维会java可以做运维吗ctaxnews的技术博客Python高级语法进阶教程_python多任务及网络编程,从零搭建网站全套教程 3.spark3.2从基础到精通 Spark是大数据体系的明星产品,是一款高性能的分布式内存迭代计算框架,可以处理海量规模的数据。本课程基于Python语言学习Spark3.2开发,课程的讲解注重理论联系实际,高效快捷,深入浅出,让初学者也能快速掌握。让有经验的工程师也https://blog.51cto.com/u_14850/6765228
13.掌握网站源码,轻松搭建个人网站!零基础也能快速上手!搭建个人或企业网站的全过程,从获取源码、解析源码、准备建站环境、上传源码并安装、调试与优化、维护与更新到推广与营销,每一步都是关键,在搭建网站的过程中,我们还需要不断学习和积累知识,关注互联网技术的发展趋势,只有这样,我们才能不断改善和优化网站,提高用户体验,实现商业价值,祝愿你在网站搭建的道路上一切顺利https://www.zovps.com/article/index.php/post/326606.html
14.不会建站?10分钟教你零基挫速搭建个人网站!本次利用宝塔面板和WordPress搭建个人网站 购买服务器 安装宝塔面板 安装WordPress 配置WordPress 一. 购买轻量应用服务器 轻量应用服务器(Light server)是一种内置应用型镜像或系统型镜像的小规格云服务器, 绑定适配大小的磁盘和带宽,为中小型企业和个人用户提供官网搭建、web应用搭建、云上学习和测试等场景的服务。 https://cloud.tencent.com/developer/article/2187238
15.零基础打造高效,搭建与实战全攻略新建区个人网站搭建本攻略从零基础出发,详细讲解搭建与的各个环节,助您轻松打造高效。涵盖设计、、选择、内容管理、SEO优化等实用技巧,助您提升性能,实现高效。 搭建基础 策略 在时代的大潮中,作为企业形象的展示窗口、产品推广的重要渠道以及服务交付的,其重要性日益凸显,如何构建一个高效、稳定的,已成为众多企业和个人追求的目标,本文http://hdcnettech.com/xjq/3122.html
16.零基础如何搭建个人独立网站,附完整建站步骤现在随着互联网的普及,各行各业大多数纷纷建立了自己的网站,但是很多的新手说起建站还是一头雾水,下面就给大家分享一个简单个人网站的全部搭建步骤,希望给新手建站爱好者带来一些帮助。 建站之前我们首先来了解一下网站的组成部分: 域名+空间(服务器)+程序(网页源代码) https://blog.itpub.net/69988117/viewspace-2768174/
17.WordPress零基础搭建网站或外贸网站:SiteGround域名主机购买教程很多新手认为自己学习搭建网站太难了,既要懂得代码知识,网页设计知识,数据库知识,又要懂得配置服务器等等,当即傻了眼,无从下手。其实,随着科技的进步和网络技术的发展,现在有些科技巨头公司已经开发出十分完善的工具让外行人都能够轻易地去现实自行建站的梦想。在这里,“科技大学”教大家如何零基础快速学会建立网站,https://www.kejicollege.com/siteground/
18.web网页开发入门:从零开始搭建你的第一个网站网页开发作为连接实体与数字世界的关键,其重要性不言而喻。本指南旨在帮助初学者从零开始构建自己的第一个网站,从理解基础概念到实现实际项目。我们将逐步深入,从HTML、CSS、JavaScript的基本知识开始,然后一步步通过实践操作构建网页,最终实现网页的布局、样式与交互功能。 基本概念 HTML:构建网页的结构 HTML(HyperTexthttps://www.imooc.com/article/347354
19.如何从零开始学习网站建设并选择合适的设备?问题二:没有编程背景的人可以学习网站建设吗? 解答:当然可以,许多网站建设工具和平台(如wordpress、wix、squarespace)提供了可视化的编辑界面,允许用户无需编写代码即可创建网站,如果你想进行更深入的定制或开发复杂的功能,学习编程将是非常有帮助的,可以从html、css和javascript开始学起,这些都是构建网站的基础技术。https://www.kdun.com/ask/1088333.html