首页
更多应用
Search
1
修改iview的标签为i-的形式而不是驼峰的形式
3,090 阅读
2
PHP微信和企业微信签名
2,829 阅读
3
在VUE中怎么全局引入sass文件
2,472 阅读
4
解决Macos下storm系列IDE卡顿的问题
2,153 阅读
5
vscode硬件占用较高解决方案
2,142 阅读
默认分类
JS
VUE
CSS
mac使用技巧
React
fastmock
登录
/
注册
Search
标签搜索
react
js
vue
vscode
nodejs
项目
代码
webpack
工具
nginx
小程序
css
fastmock
eslint
npm
http
vue-cli3
git
浏览器
const
fastmock技术社区
累计撰写
104
篇文章
累计收到
26
条评论
首页
栏目
默认分类
JS
VUE
CSS
mac使用技巧
React
fastmock
页面
更多应用
搜索到
1
篇与
的结果
2025-04-25
three.js中的重要基础概念
Three.js 是一个功能强大的 JavaScript 库,用于创建和展示基于 WebGL 的三维图形。在学习使用Three.js来构建3D世界之前,有一些基本概念是需要牢记的,否则,在你绘制3D世界时,思绪会是杂乱无章的:场景(Scene)定义:场景是所有三维对象的容器,用于存储和管理几何体、光源、相机等元素。作用:场景是渲染的基础,所有需要显示的对象都必须添加到场景中。创建:const scene = new THREE.Scene();相机(Camera)定义:相机定义了从哪个视角观察三维场景。常见类型:透视相机(PerspectiveCamera):模拟人眼透视效果,远处物体看起来更小。const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);正交相机(OrthographicCamera):不考虑透视效果,所有物体大小一致。const camera = new THREE.OrthographicCamera(-1, 1, 1, -1, 0.1, 1000);渲染器(Renderer)定义:渲染器负责将场景和相机中的内容绘制到屏幕上。常用渲染器:THREE.WebGLRenderer 是最常用的渲染器。创建:const renderer = new THREE.WebGLRenderer(); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement);几何体(Geometry)定义:几何体定义了物体的形状。常见几何体:BoxGeometry:立方体。SphereGeometry:球体。PlaneGeometry:平面。BufferGeometry:更高效的自定义几何体。创建:const geometry = new THREE.BoxGeometry(1, 1, 1);材质(Material)定义:材质定义了物体的外观属性,如颜色、纹理、反射等。常见材质:MeshBasicMaterial:基础材质,不考虑光照。MeshLambertMaterial:漫反射材质,适合哑光表面。MeshPhongMaterial:高光材质,适合光滑表面。MeshStandardMaterial:基于物理的材质,适合现代渲染效果。创建:const material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });网格(Mesh)定义:网格是几何体和材质的组合,用于创建具体的三维物体。创建:const mesh = new THREE.Mesh(geometry, material); scene.add(mesh);光源(Light)定义:光源用于照亮场景中的物体。现实中的一切物体之所以能被看到,都是因为有了光,在three.js 的世界里,亦是如此,需要看到哪个地方,就需要有光线照亮那个地方常见光源:AmbientLight:环境光,均匀照亮整个场景。DirectionalLight:方向光,模拟太阳光。PointLight:点光源,从一点向四周发射光线。SpotLight:聚光灯,模拟手电筒或舞台灯光。创建:const light = new THREE.DirectionalLight(0xffffff, 1); scene.add(light);控制器(Controls)定义:控制器用于控制相机的移动和旋转,实现用户交互。常见控制器:OrbitControls:允许用户通过鼠标或触摸屏旋转、平移和缩放视图。TrackballControls:类似于轨道球的交互方式。使用:const controls = new THREE.OrbitControls(camera, renderer.domElement);加载器(Loader)定义:加载器用于加载外部资源,如模型、纹理、字体等。这个库很重要,没有这个库,所有的东西都需要我们用代码来绘制,这是相当庞大的工作量,而有了这个库,我们就可以加载设计师和建模师做好了的模型,纹理图等内容到场景中,常见加载器:GLTFLoader:加载 GLTF 格式的 3D 模型。TextureLoader:加载图像作为纹理。FontLoader:加载字体文件。使用:const loader = new THREE.TextureLoader(); const texture = loader.load('texture.jpg');动画(Animation)定义:动画用于实现动态效果,如旋转、移动、缩放等。实现方式:使用 requestAnimationFrame 实现循环更新。使用 THREE.AnimationMixer 播放模型动画。示例:function animate() { requestAnimationFrame(animate); mesh.rotation.y += 0.01; renderer.render(scene, camera); } animate();坐标系(Coordinate System)定义:Three.js 使用右手坐标系,X 轴指向右方,Y 轴指向上方,Z 轴指向屏幕外。注意:默认情况下,原点位于场景中心。缓冲区几何体(BufferGeometry)定义:BufferGeometry 是一种高效的数据结构,用于定义复杂的几何体。优点:性能更高,适合大规模数据处理。使用:const geometry = new THREE.BufferGeometry(); const vertices = new Float32Array([ 0, 0, 0, 1, 0, 0, 0, 1, 0 ]); geometry.setAttribute('position', new THREE.BufferAttribute(vertices, 3));辅助工具(Helpers)定义:辅助工具用于可视化调试,如网格、轴、光源范围等。常见工具:GridHelper:显示网格。AxesHelper:显示坐标轴。DirectionalLightHelper:显示方向光的方向。雾效(Fog)定义:雾效用于模拟远近物体的模糊效果。使用:scene.fog = new THREE.Fog(0xffffff, 1, 10);
2025年04月25日
10 阅读
0 评论
0 点赞