您的位置:首页 > 汽车 > 新车 > 如何做网络营销方案策划_杭州正规制作网站公司吗_免费下载b站视频软件_郑州网站推广公司咨询

如何做网络营销方案策划_杭州正规制作网站公司吗_免费下载b站视频软件_郑州网站推广公司咨询

2024/12/22 12:50:36 来源:https://blog.csdn.net/m0_51180924/article/details/144550247  浏览:    关键词:如何做网络营销方案策划_杭州正规制作网站公司吗_免费下载b站视频软件_郑州网站推广公司咨询
如何做网络营销方案策划_杭州正规制作网站公司吗_免费下载b站视频软件_郑州网站推广公司咨询

34. Three.js案例-创建球体与模糊阴影

实现效果

效果

知识点

WebGLRenderer

WebGLRenderer 是 Three.js 中用于渲染 3D 场景的核心类。它负责将场景中的对象绘制到画布上。

构造器
new THREE.WebGLRenderer(parameters)
参数类型描述
parametersObject可选参数对象,包含以下属性:
antialiasBoolean是否开启抗锯齿,默认为 false
alphaBoolean是否透明,默认为 false
premultipliedAlphaBoolean是否使用预乘 Alpha,默认为 true
preserveDrawingBufferBoolean是否保留绘图缓冲区,默认为 false
stencilBoolean是否启用模板缓冲区,默认为 true
depthBoolean是否启用深度缓冲区,默认为 true
方法
  • setPixelRatio(value): 设置设备像素比。
  • setSize(width, height): 设置渲染器的尺寸。
  • setClearColor(color, alpha): 设置渲染器的背景颜色。
  • render(scene, camera): 渲染场景。

Scene

Scene 是 Three.js 中用于存储场景中所有对象的容器。

构造器
new THREE.Scene()

PerspectiveCamera

PerspectiveCamera 是 Three.js 中用于创建透视相机的类。

构造器
new THREE.PerspectiveCamera(fov, aspect, near, far)
参数类型描述
fovNumber视野角度,单位为度。
aspectNumber相机宽高比。
nearNumber近裁剪面距离。
farNumber远裁剪面距离。
方法
  • position.set(x, y, z): 设置相机的位置。
  • lookAt(vector): 设置相机的朝向。

DirectionalLight

DirectionalLight 是 Three.js 中用于创建方向光的类。

构造器
new THREE.DirectionalLight(color, intensity)
参数类型描述
colorColor光源颜色。
intensityNumber光源强度,默认为 1
属性
  • castShadow: 是否投射阴影,默认为 false
  • shadow.radius: 阴影半径,用于产生模糊效果。

SphereBufferGeometry

SphereBufferGeometry 是 Three.js 中用于创建球体几何体的类。

构造器
new THREE.SphereBufferGeometry(radius, widthSegments, heightSegments)
参数类型描述
radiusNumber球体半径。
widthSegmentsNumber经度方向上的分段数,默认为 8
heightSegmentsNumber纬度方向上的分段数,默认为 6

Mesh

Mesh 是 Three.js 中用于创建网格对象的类。

构造器
new THREE.Mesh(geometry, material)
参数类型描述
geometryGeometry几何体。
materialMaterial材质。
属性
  • castShadow: 是否投射阴影,默认为 false
  • receiveShadow: 是否接收阴影,默认为 false

PlaneGeometry

PlaneGeometry 是 Three.js 中用于创建平面几何体的类。

构造器
new THREE.PlaneGeometry(width, height, widthSegments, heightSegments)
参数类型描述
widthNumber平面宽度。
heightNumber平面高度。
widthSegmentsNumber宽度方向上的分段数,默认为 1
heightSegmentsNumber高度方向上的分段数,默认为 1

MeshStandardMaterial

MeshStandardMaterial 是 Three.js 中用于创建标准材质的类。

构造器
new THREE.MeshStandardMaterial(parameters)
参数类型描述
colorColor材质颜色。
metalnessNumber金属度,默认为 0
roughnessNumber粗糙度,默认为 1

Vector3

Vector3 是 Three.js 中用于表示三维向量的类。

构造器
new THREE.Vector3(x, y, z)
参数类型描述
xNumberX 轴坐标。
yNumberY 轴坐标。
zNumberZ 轴坐标。
方法
  • set(x, y, z): 设置向量的坐标。
  • rotateX(angle): 绕 X 轴旋转。
  • rotateY(angle): 绕 Y 轴旋转。
  • rotateZ(angle): 绕 Z 轴旋转。

代码

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><script src="ThreeJS/three.js"></script><script src="ThreeJS/jquery.js"></script>
</head>
<body>
<div id="myContainer"></div>
<script>// 创建渲染器var myRenderer = new THREE.WebGLRenderer();myRenderer.setPixelRatio(window.devicePixelRatio);myRenderer.setSize(480, 320);myRenderer.setClearColor('white', 1);myRenderer.shadowMap.enabled = true;$("#myContainer").append(myRenderer.domElement);// 创建场景var myScene = new THREE.Scene();// 创建相机var myCamera = new THREE.PerspectiveCamera(45, 480 / 320, 0.1, 1000);myCamera.position.set(4, 4, 2);myCamera.position.multiplyScalar(2);myCamera.lookAt(new THREE.Vector3(0, 0, 0));// 创建方向光var myLight = new THREE.DirectionalLight('white', 1);myLight.castShadow = true;myLight.position.set(0, 14, 0);myLight.shadow.radius = 16;myScene.add(myLight);// 创建球体var mySphereGeometry = new THREE.SphereBufferGeometry(2, 36, 36);var mySphereMaterial = new THREE.MeshNormalMaterial({wireframe: true, transparent: true});var mySphereMesh = new THREE.Mesh(mySphereGeometry, mySphereMaterial);mySphereMesh.position.set(0, 2.5, 0);mySphereMesh.castShadow = true;myScene.add(mySphereMesh);// 创建平面var myPlaneGeometry = new THREE.PlaneGeometry(120, 120, 1, 1);var myPlaneMaterial = new THREE.MeshStandardMaterial({color: 'white'});var myPlaneMesh = new THREE.Mesh(myPlaneGeometry, myPlaneMaterial);myPlaneMesh.rotateX(-Math.PI / 2);myPlaneMesh.rotateZ(-Math.PI / 7);myPlaneMesh.position.set(0, -4.5, 0);myPlaneMesh.receiveShadow = true;myScene.add(myPlaneMesh);// 渲染场景myRenderer.render(myScene, myCamera);
</script>
</body>
</html>

演示链接

示例链接

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com