首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

# threejs 基础知识点汇总

threejs 基础知识点汇总 之前写了几篇博文,但是我觉得写不好,我今天再补充一篇还不好,把基础知识点汇总一下,运行代码了,只写关键代码,但是看了之前我写那几篇,看这篇的话问题其实不大。...Three.js 网格模型Mesh 实际生活中有各种各样物体,threejs可以通过网格模型Mesh (opens new window)表示一个虚拟物体,比如一个箱子、一座房子。..., material); //网格模型对象Mesh 创建了几何体、材质、网格模型后,需要将创建网格模型添加到场景就可以页面展示三维模型。...Three.js 三维坐标系 Three.js,渲染三维模型,当我们使用 scene.add 将模型添加到场景后,模型默认添加在坐标系原点,也就是 (0,0,0) 处。...threejs,咱们用网格模型Mesh模拟生活物体,所以threejs模拟光照Light对物体表面的影响,就是模拟光照Light对网格模型Mesh表面的影响。

12710

Threejs入门之四:Threejs

缺省值为 0xffffff),第二个参数为光强度(取值范围0-1,默认为1)index.js添加如下代码,即可创建环境光并添加到场景// 创建环境光const light = new THREE.AmbientLight...(0x404040,,0.6)scene.add(light)添加完成后运行浏览器,发现浏览器并没有任何变化 这是因为我们之前选择材质时间选择是基础网格材质(MeshBasicMaterial)...缺省值 1 创建一个点光源并添加到场景// 创建点光 参数1 光颜色,参数2 光强度const pointLight = new THREE.PointLight(0xffffff,1)就想生活灯泡是屋顶中央位置安装一样...,我们Threejs也要给点光源一个位置,然后将其添加到场景// 点光源位置 pointLight.position.set(400,300,200)scene.add(pointLight)此时运行浏览器...属性和目标指向对象position属性计算光线方向directionalLight.position.set(80,100,50)// 光方向指向对象网格模型mesh,设置默认为0,0,0directionalLight.target

3K30
您找到你想要的搜索结果了吗?
是的
没有找到

第167期:threejs最简单例子

同时引出几个开发过程容易忽略概念,在后面的小节中将做详细介绍。...创建立方体 虽然这个例子看起来很古老,是入门threejs必须看例子,但是大部分文章对这个例子讲解并非十分详细,只是简单说明了如何在场景添加一个物体这么一个过程,但是其中有几个值得去深入思考问题...5立方体,一个颜色为蓝色基础材质对象,并通过Mesh网格对象将它们两个联系起来,最终通过scene.add()方法将这个立方体添加到场景之中。...threejs 也一样,场景添加物体默认都在原点位置,我们可以将相机和立方体位置信息打印出来: // 相机.position _Vector3 {x: 0, y: 0, z: 0} // 立方体...我们通过创建场景、相机、几何体、材质对象网格对象通过场景add方法将网格对象添加到场景,并通过渲染器render方法将场景和相机渲染到界面上。

23720

ThreeJS 炫酷特效旋转多面体Web页 Demo 01《ThreeJS 炫酷特效制作》

ThreeJS 三个要素,若对建模、游戏有过了解同学在学习 ThreeJS 对知识点理解会更容易接受。... ThreeJS 中有三个很关键对象,分别是 摄像头、场景以及渲染器: 其中 场景 是通过 ThreeJS “搭建”呈现特效一个“舞台”,创建好一个场景后,即可往这个场景添加对应多种物体,例如多边形...、粒子、球体等; 创建好场景后我们需要在场景添加摄像头用于呈现场景视觉效果,摄像头 ThreeJS 担任 “视觉采集” 角色,可以通过控制摄像头采集范围(大小)从而采集场景中视觉呈现; 那么完成以上两步后...) 3.3 创建 Mesh 用于组装 3D 对象 Mesh ThreeJS 3D 对象是必要,通过 创建 Mesh 组合 3D 对象,创建 Mesh 需要指定对应几何体以及材质,如以下代码...对象,把创建好几何体 planet 添加到 center ,再把 center 添加到 scene 场景即可。

46210

Three.js入门案例(上)

关注初识Threejs与小编一起学习成长 Three.js赋能下,WEB网页效果逐渐丰富起来,今天我们就来运用之前学习Three.js基础知识,实现一个旋转几何体-球体。 ?...世界,材质(Material)+几何体(Geometry)就是一个 mesh //创建网格对象 earth = new THREE.Mesh(earthGeometry, earthMaterial...= new CSS2DObject(h2html); earthLabel.position.set(0, 2, 0); earth.add(earthLabel);//DOM元素实例添加到网格...scene.add(earth);//将球体添加到场景 } 4、初始化渲染器: _this.renderer=function(){ renderer = new THREE.WebGLRenderer...,大家可以动手尝试一下修改构造函数参数值,如:基础材质纹理贴图、网格模型旋转方向等,通过它们巧妙组合,可以让场景更加绚丽多彩,快去动手实践吧~ 如果你对本文内容有任何建议,欢迎与小编沟通交流,一起学习成长

5.9K20

Threejs入门之九:认识缓冲几何体BufferGeometry(二)

前面一节我们初步了解了BufferGeometry,它可以自定义任何几何形状,它数据存储BufferAttribute。...我们也使用BufferGeometry创建了一个自定义mesh物体,但是,如果你跟着步骤创建了这个物体,用鼠标反转你会发现,这个物体只有一个面可以看到,反转后是看不到任何物体,这是因为Threejs...,空间中一个三角形是有正反两面的,Three.js规则你眼睛(相机)对着三角形一个面,如果三个顶点顺序是逆时针方向,该面视为正面,如果三个顶点顺序是顺时针方向,该面视为反面。...我们可以创建材质时候配置side属性来设置物体正反面是否可见。 1. 三角面的正反面 Three.js材质默认正面可见,反面不可见。...,它和我们前面用过网格模型Mesh一样,都是threejs提供一种模型对象

1.4K20

Threejs入门之二:引用Threejs并创建第一个3D图形

Threejs引入1.新建一个文件夹,命名为threejs_demo,该文件夹下新建一个lib文件夹,将前面下载threejs源码build文件夹three.module.js文件拷贝到lib...文件夹下 2.用vscode打开新建文件夹,根目录下新建一个index.html文件和一个index.js文件 3.index.html引入threejs,方式如下: <script type...,具体可查看threejs官方文档 3.Materials:材质顾名思义就是物体材料质感,比如颜色、透明度等,在场景中就相当于道具颜色和材料,threejs也提供了很多材质类接口,比如基础网格材质...,并将物体放入到场景,所以我们通过position属性设置物体位置,并通过sceneadd属性将物体添加到场景// 设置物体在场景位置mesh.position.set(0,10,10)//...renderer.render(scene,camera)12.至此,我们整改场景已经建设完成了,但是别急,此时你运行html文件浏览器上还看不到任何东西,是因为我们没有指定一个容器用来放置渲染器,

1.2K41

Threejs进阶之三:通过GUI修改gltf模型(摩托车)颜色

上一节我们对摩托车场景进行了优化,添加了聚光灯及阴影等效果,这一节我们继续对摩托车场景进行优化,我们通过GUI来控制摩托车各个部位颜色修改 先看下修改后最终效果 引入GUImotor3d.js通过...首先我们initGUI()方法先定义一个对象,这个对象包含上面各个部分颜色initGUI() { var obj = { bodyColor: '#6e2121',// 车身颜色...,可以弹出颜色面板 添加车架、车座、轮胎及把手控制面板 用同样方法添加车架、车座、轮胎及把手控制面板 遍历模型,修改模型各Mesh颜色通过上面的代码,我们已经将GUI添加到了屏幕上, 但是我们弹出颜色窗口中点击修改颜色...,三维场景摩托车对应部位并没有修改颜色,这是因为我们还没有将上面定义Mesh材质与模型Mesh关联。....traverse递归遍历模型Threejs为我们提供了一个递归遍历方法.traverse,使用它可以遍历很方便获取我们需要Mesh,traverse提供了一个回调函数,我们traverse回调函数通过判断对象

4.6K30

Threejs进阶之十七:ThreejsPath、Shape和ShapeGeometry类

实际应用,有时候需要我们根据一个二维图形拉伸为三维图形情况,这就需要我们对Threejs中提供二维图形相关类有一个深入了解,这一节我们就深入聊一聊ThreejsPath、Shape和...ShapeGeometry类 Path类 Path是一个多用途路径(路径)对象,它通常在创建Shape对象使用。...第一个点定义了偏移量, 接下来点作为LineCurves被添加到curves数组。 points – (可选参数)Vector2s数组。...THREE.BufferGeometry().setFromPoints( points ); const mesh = new THREE.Line(geometry, material); // 添加网格对象场景...geometry = new THREE.ShapeGeometry( shape ); const mesh = new THREE.Mesh(geometry, material); // 添加网格对象场景

95520

Threejs入门之六:利用HTML5requestAnimationFrame方法实现物体旋转

2.隐藏或不可见元素,requestAnimationFrame将不会进行重绘或回流,减少了CPU、GPU和内存使用量 3.requestAnimationFrame是由浏览器专门为动画提供API...,在运行时浏览器会自动优化方法调用,并且如果页面不是激活状态下的话,动画会自动暂停,有效节CPU开销Threejs利用requestAnimationFrame实现动画接上节内容,首先在index.js...)// 将物体添加到场景,相当于将物体添加到画布汇总scene.add(mesh)// console.log(mesh);// 创建环境光const light = new THREE.AmbientLight...:通过光源position属性和目标指向对象position属性计算光线方向directionalLight.position.set(80,100,50)// 光方向指向对象网格模型mesh,设置默认为...事件,监听到改变,重新执行渲染操作渲染三维场景// controls.addEventListener('change',function(){ // renderer.render(scene,

1.3K20

Three.JS第一个三弟(3D)案例

跨平台性:Three.js基于Web技术,能够主流现代浏览器上运行,包括桌面端和移动端,实现了跨平台兼容性。...Three.js技术名词3大核心关键模块 场景(Scene):场景是 Three.js 一个核心概念,它是所有 3D 对象容器。...场景可以包含几何体、光源、相机等,它们共同构成了一个完整 3D 世界。 Three.js 场景是通过 THREE.Scene 类来表示。...以下是一个简单 Three.js 示例,展示了如何创建一个几何体、材质和网格,并将其添加到场景:// 创建几何体var geometry = new THREE.BoxGeometry(1, 1,...(geometry, material);// 将网格添加到场景scene.add(mesh);在这个示例,我们创建了一个立方体几何体、一个基本材质和一个网格,并将其添加到场景

14720

Three.js 粒子系统学习小记:礼花效果实现

背景知识 3D建模过程,当我们需要创建很多细小物体,并不会一个个地创建这些物体,而是通过创建粒子,粒子可以模拟很多效果,例如烟花、火焰、雨滴、雪花、云朵等等。...texture applied. threejs官网如是说,sprite是一直面向camera平面,并且我们可以用其创建基于屏幕坐标移动、定位和缩放对象,而不影响三维场景其他物体(做到互不影响必须单独创建一个用于...group.add(particle); } 飞线动画实现 每一帧render,判断每个粒子y坐标小于一定值,以不同速度按照正弦曲线轨迹向上运动,形成飞线动画效果。.../tree/master/particle 学习心得 threejs粒子系统,每个粒子其实是一张图片或者一个canvas而不是3D物体。...当粒子量级非常大,可以用BufferGeometry来代替Geometry顶点,因为它可以将数据存储缓冲区,减少数据传递到GPU成本,同时因为缓冲区,所以更适合静态物体。

19.8K43

Threejs入门之十四:Threejs(Group)对象

其实就是一个集合,将不同物体添加到一个,就形成了一个集合; 比如我们可以创建两个物体,然后将这两个物体使用group.add方法添加到同一个// 创建几何体const geometry =...group = new THREE.Group()// 将物体A添加到group.add(cubeA)// 将物体B添加到group.add(cubeB)// 将group添加到scenescene.add...(group) Group特性 Threejs官方文档中介绍Group说它几乎与Object3D相同,因此,Group属性和Object3D相同 .children属性 使用group.children...使用group.rotate设置旋转 group.rotateY(Math.PI/4) .traverse()方法 递归遍历 可以通过递归遍历算法去遍历Threejs一个模型对象包含所有后代group.traverse...= new THREE.AxesHelper(50)cubeA.add(cubeAaxesHelper)好了,关于ThreejsGroup对象,就介绍到这里,更多功能可以查看官方文档,喜欢关注点赞哦

2.3K10

基于 Threejs web 3D 开发入门

导语 随着软硬件发展,PC和移动端浏览器上进行web 3D开发条件已经基本成熟了,出现了不少js 3D库,Threejs是js 3D库佼佼者。...相机:Threejs必须要有往场景添加一个相机,相机用来确定观察位置、方向、角度,相机看到内容,就是我们最终屏幕上看到内容。程序运行过程,可以调整相机位置、方向、角度。...物体:有了场景、相机、光,就可以往场景中放物体了,Threejs,物体由形状和材质两部分组成,形状决定物品轮廓,材质则是物体材料和质感。...Threejs相机跟真实世界相机不完全一样,这里相机可见区域是一个立方体,称为相机示景体。...常用做法是用三角形组成网格来模拟,如下图所示,用足够多三角形,兔子身体看起来就足够平滑,跟真实兔子比较接近。著名斯坦福兔子模型用了69451个三角形。

15.2K43

Threejs入门之二十:使用InstancedMesh(实例化网格)批量创建物体

InstancedMesh(实例化网格)是Threejs提供一种特殊网格Mesh,它可以批量创建具有相同几何体和材质物体;构造函数InstancedMesh( geometry : BufferGeometry...可以在运行时改变这个数值到 [0, count] 区间一个整数 .instanceColor : InstancedBufferAttribute 代表所有实例颜色。默认情况下null。...设置为trueInstancedMesh实例应用使用InstancedMesh实现Threejs案例instancing / raycast 效果 引入Threejs并创建场景import * as...数量循环设置meshes每一个小球位置和颜色 我们首先定义一个变量index作为每一个小球索引ID,初始值为0 定义一个变量white,用于存放Threejs颜色 定义一个offset,用于存放偏移量...().setHex(Math.random() * 0xffffff)) OK,今天就先到这里吧,下次我们来实现这个有小球组成立方体与鼠标的交互效果,仿照Threejs案例效果来实现当鼠标滑过某个小球

2.2K20

Threejs入门之十一:创建旋转地球

经过前面几个章节介绍,我们对Threejs已经有了一个相对深入了解,下面我们通过Threejs来做一个旋转地球效果。....拷贝资源,将Threejs源码three.module.js拷贝到js文件夹,将地图贴图文件拷贝到images文件夹 3.用vscode打开earth文件夹,根目录下新建index.html文件...,index.html引入three.module.js,index.html创建一个id为webgldiv6.index.js编写代码 引入Threejsimport * as THREE from 'three'创建场景对象const scene = new THREE.Scene.../images/earth.js')})创建物体 创建网格对象并使用上面创建几何体和材质作为参数传给对象,设置对象坐标位置,并将其添加到场景const earth = new THREE.Mesh

1.4K10

Threejs入门之三:让物体跟随鼠标动起来

首先我们要了解一个概念,在三维场景,我们要控制物体旋转,实际上不是物体旋转,而是我们相机(还记得上一节相机吗)围绕物体旋转,就像电影镜头拉近一样,是相机动,不是物体动,所以,Threejs...是ThreeJS一个扩展库,其本身不在threejs基础库里面,其位于threejs—examples—jsm—controls文件夹下面,我们在上一节引入threeJS下面添加如下代码进行引入"...4.相机设置完成后,我们运行浏览器,点击鼠标控制物体发现物体依然没有旋转,这是因为我们虽然用鼠标控制物体旋转了,但是我们画布没有重新渲染导致,我们前面提到过,要想将场景物体展示到容器,需要用渲染器进行渲染后展示...,所以,我们还需要通过监听事件来监听OrbitControlschange事件,监听到OrbitControlschange事件改变,我们重新渲染场景就可以了// 监听轨道控制器change事件...)// 将物体添加到场景,相当于将物体添加到画布汇总scene.add(mesh)// console.log(mesh);// 创建一个相机,相机相当于画家眼睛,// PerspectiveCamera

3.1K30
领券