ThreeJs 认识核心类

作者 : 开心源码 本文共1322个字,预计阅读时间需要4分钟 发布时间: 2022-05-13 共249人阅读

一、前言

ThreeJs 中定义了少量核心类,在实际的项目开发过程中,除了要常握场景、相机以及灯光等相关类的用法,还要掌握核心类的用法。

二、认识核心类

1.Object3D

图片形容

Object3D 是 ThreeJs 中对物体笼统的基类,包括相机和灯光都是 Object3D 的子类。一般情况下,我们不会直接使用这个类,对于构造物体,一般我们都是使用的 Mesh。

2.BufferGeometry

图片形容

var geometry = new THREE.BufferGeometry();// 创立一个简单的矩形. 在这里我们左上和右下顶点被复制了两次。// 由于在两个三角面片里,这两个顶点都需要被用到。var vertices = new Float32Array( [    -1.0, -1.0,  1.0,     1.0, -1.0,  1.0,     1.0,  1.0,  1.0,     1.0,  1.0,  1.0,    -1.0,  1.0,  1.0,    -1.0, -1.0,  1.0] );// itemSize = 3 由于每个顶点都是一个三元组。geometry.addAttribute( 'position', new THREE.BufferAttribute( vertices, 3 ) );var material = new THREE.MeshBasicMaterial( { color: 0xff0000 } );var mesh = new THREE.Mesh( geometry, material );

3.BufferAttribute

图片形容

BufferAttribute 简单来说就是给 BufferGeometry 设置属性的。

4.Geometry

图片形容

5.Layers

图片形容

6.Raycaster

图片形容

var raycaster = new THREE.Raycaster();var mouse = new THREE.Vector2();function onMouseMove( event ) {    // 将鼠标位置归一化为设施坐标。x 和 y 方向的取值范围是 (-1 to +1)    mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;    mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;}function render() {    // 通过摄像机和鼠标位置升级射线    raycaster.setFromCamera( mouse, camera );    // 计算物体和射线的焦点    var intersects = raycaster.intersectObjects( scene.children );    for ( var i = 0; i < intersects.length; i++ ) {        intersects[ i ].object.material.color.set( 0xff0000 );    }    renderer.render( scene, camera );}window.addEventListener( 'mousemove', onMouseMove, false );window.requestAnimationFrame(render);

三、总结

上面只列出了项目中比较常用的类,还有少量没有列出来。掌握了上面的核心类,在一般的项目开发中已经能满足需求了。

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » ThreeJs 认识核心类

发表回复