美文网首页Web前端之路
ThreeJs 认识核心类

ThreeJs 认识核心类

作者: 仰简 | 来源:发表于2019-08-01 23:46 被阅读4次

一、前言

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);

三、总结

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

相关文章

  • ThreeJs 认识核心类

    一、前言 ThreeJs 中定义了一些核心类,在实际的项目开发过程中,除了要常握场景、相机以及灯光等相关类的用法,...

  • Three.js克隆.clone()和复制.copy()

    Three.js克隆.clone()和复制.copy() 你查看Threejs的文档可以发现Threejs的很多类...

  • ThreeJs 认识材质

    一、前言 材质和纹理有那么一点微妙的关系,纹理决定了物体的表面,而材质则决定了物体的“气质”,比如说,反射度,光滑...

  • ThreeJs 认识纹理

    一、前言 这篇文章,我们主要来了解一下 ThreeJs 中纹理相关的知识。渲染一个 3D 物体时,网格 Mesh ...

  • ThreeJs 认识相机

    一、前言 3D 世界中的相机是一个抽象的描述,其模拟了我们在真实世界中透过相机来看世界的这么一个场景。当我们透过相...

  • ThreeJs 认识光和影

    一、前言 这一篇文章,我们主要来了解一下 ThreeJs 中关于光和影的相关知识点。通过给 3D 场景以及物体加上...

  • ThreeJs 天空盒子 图片加载变黑问题

    threeJS功能实现不可缺少scene(场景), camera(相机), renderer(渲染器)三个核心组件...

  • ThreeJs 认识场景和雾

    一、前言 场景,可以认为是 ThreeJs 3D 世界中的一个舞台,场景允许你在什么地方、摆放什么东西来交给thr...

  • threejs相机只在水平或垂直方向上平移

    threejs 相机水平和垂直移动,这个功能在threejs提供了很方便的操作方法,在threejs里相机enab...

  • three.js 的网站连接

    three.js 官网 https://threejs.org/ three.js 官方例子 threejs.or...

网友评论

    本文标题:ThreeJs 认识核心类

    本文链接:https://www.haomeiwen.com/subject/chghdctx.html