37. Three.js案例-绘制部分球体

37. Three.js案例-绘制部分球体

实现效果

知识点

WebGLRenderer

WebGLRenderer 是Three.js中的一个渲染器类,用于将3D场景渲染到网页上。

构造器

WebGLRenderer( parameters : Object )

参数 类型 描述
parameters Object 渲染器的配置参数,可选。

常用参数:

  • antialias:布尔值,是否开启抗锯齿,默认为false
  • alpha:布尔值,是否透明,默认为false
  • premultipliedAlpha:布尔值,是否使用预乘 alpha,默认为true
  • preserveDrawingBuffer:布尔值,是否保留绘图缓冲区,默认为false
  • depth:布尔值,是否启用深度测试,默认为true
  • stencil:布尔值,是否启用模板测试,默认为true
  • failIfMajorPerformanceCaveat:布尔值,如果性能不佳则失败,默认为false
  • powerPreference:字符串,GPU性能偏好,默认为default,可选值有defaulthigh-performancelow-power
方法
  • setPixelRatio( value : Number ):设置设备像素比。
  • setSize( width : Number, height : Number, updateStyle : Boolean ):设置渲染器的尺寸。

Scene

Scene 是Three.js中的一个场景类,用于存储和管理3D对象。

构造器

Scene()

无参数。

属性
  • background:场景的背景颜色或纹理。

PerspectiveCamera

PerspectiveCamera 是Three.js中的一个透视相机类,用于模拟人眼的透视效果。

构造器

PerspectiveCamera( fov : Number, aspect : Number, near : Number, far : Number )

参数 类型 描述
fov Number 视野角度,单位为度。
aspect Number 相机的宽高比。
near Number 近裁剪面距离。
far Number 远裁剪面距离。
方法
  • position.set( x : Number, y : Number, z : Number ):设置相机的位置。
  • lookAt( vector : Vector3 ):设置相机的朝向。
  • rotateX( angle : Number ):绕X轴旋转。
  • rotateY( angle : Number ):绕Y轴旋转。
  • rotateZ( angle : Number ):绕Z轴旋转。

SphereGeometry

SphereGeometry 是Three.js中的一个球体几何体类,用于创建球体。

构造器

SphereGeometry( radius : Number, widthSegments : Integer, heightSegments : Integer, phiStart : Number, phiLength : Number, thetaStart : Number, thetaLength : Number )

参数 类型 描述
radius Number 球体的半径,默认为50
widthSegments Integer 经度方向上的分段数,默认为8
heightSegments Integer 纬度方向上的分段数,默认为6
phiStart Number 经度起始角度,默认为0
phiLength Number 经度范围角度,默认为Math.PI * 2
thetaStart Number 纬度起始角度,默认为0
thetaLength Number 纬度范围角度,默认为Math.PI

Mesh

Mesh 是Three.js中的一个网格类,用于将几何体和材质组合成一个3D对象。

构造器

Mesh( geometry : Geometry, material : Material )

参数 类型 描述
geometry Geometry 几何体。
material Material 材质。
方法
  • position.set( x : Number, y : Number, z : Number ):设置网格的位置。

MeshNormalMaterial

MeshNormalMaterial 是Three.js中的一个材质类,用于显示几何体的法线。

构造器

MeshNormalMaterial( parameters : Object )

参数 类型 描述
parameters Object 材质的配置参数,可选。

常用参数:

  • wireframe:布尔值,是否以线框模式显示,默认为false
  • transparent:布尔值,是否透明,默认为false

代码

html 复制代码
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <script src="ThreeJS/three.js"></script>
    <script src="ThreeJS/jquery.js"></script>
</head>
<body>
<center id="myContainer"></center>
<script>
    // 创建渲染器
    var myRenderer = new THREE.WebGLRenderer({antialias: true});
    myRenderer.setPixelRatio(window.devicePixelRatio);
    myRenderer.setSize(window.innerWidth, window.innerHeight);
    $("#myContainer").append(myRenderer.domElement);

    // 创建场景
    var myScene = new THREE.Scene();
    myScene.background = new THREE.Color('white');

    // 创建相机
    var myCamera = new THREE.PerspectiveCamera(45, 480 / 320, 0.1, 1000);
    myCamera.position.set(1.5599116746198947, 1.509078998195788, 5.593688956725154);
    myCamera.lookAt(new THREE.Vector3(0, 0, 0));
    myCamera.rotateX(-0.26350903631970135);
    myCamera.rotateY(0.2630069577395451);
    myCamera.rotateZ(0.07002478056650097);

    // 创建部分球体几何体
    var mySphereGeometry = new THREE.SphereGeometry(2, 8, 10, Math.PI / 6, Math.PI / 2);
    var mySphereMaterial = new THREE.MeshNormalMaterial({wireframe: true, transparent: true});
    var mySphereMesh = new THREE.Mesh(mySphereGeometry, mySphereMaterial);
    mySphereMesh.position.set(-2, -2, 0);
    myScene.add(mySphereMesh);

    // 渲染部分球体
    myRenderer.render(myScene, myCamera);
</script>
</body>
</html>

演示链接

示例链接

相关推荐
二狗哈1 小时前
Cesium快速入门4:天空盒
webgl·cesium·地图可视化
二狗哈13 小时前
Cesium快速入门1:打造第一个Cesium应用
webgl·cesium
tangdou3690986551 天前
AI真好玩系列-WebGL爱心粒子手势互动教程 | Interactive Heart Particles with Hand Gestures
前端·人工智能·webgl
小猪努力学前端5 天前
基于PixiJS的小游戏广告开发
前端·webgl·游戏开发
光影少年6 天前
WebGIS 和GIS学习路线图
学习·前端框架·webgl
DBBH6 天前
Cesium源码分析之渲染3DTile的一点思考
图形渲染·webgl·cesium.js
Robet7 天前
TS2d渲染引擎
webgl
Robet7 天前
WebGL2D渲染引擎
webgl
goodName8 天前
如何实现精准操控?Cesium模型移动旋转控件实现
webgl·cesium
一千柯橘9 天前
从摄影新手到三维光影师:Three.js 核心要素的故事
前端·three.js