three.js学习笔记1

1.webgl_animation_keyframes

1.增强环境光
const pmremGenerator = new THREE.PMREMGenerator( renderer );
scene.environment = pmremGenerator.fromScene( new RoomEnvironment( renderer ), 0.04 ).texture;

2.动画混合器
const clock = new THREE.Clock();
mixer = new THREE.AnimationMixer( model );
mixer.clipAction( gltf.animations[ 0 ] ).play();

function animate() {

		const delta = clock.getDelta();

		mixer.update( delta );

			}

2.webgl_animation_skinning_blending

// 1.设置雾效
const color = 0xFFFFFF; // 雾的颜色,白色
const near = 1; // 雾效开始的距离
const far = 100; // 雾效完全覆盖的距离
scene.fog = new THREE.Fog(color, near, far);

//2.THREE.HemisphereLight 是 Three.js 中的一种光源,用于模拟天空和地面光照
THREE.HemisphereLight 的参数
skyColor (Integer): 上方光源的颜色。
groundColor (Integer): 下方光源的颜色。
intensity (Number): 光源的强度。

const hemiLight = new THREE.HemisphereLight( 0xffffff, 0x8d8d8d, 3 );
hemiLight.position.set( 0, 20, 0 );
scene.add( hemiLight );


//3.THREE.DirectionalLight 是 Three.js 中的一种光源,模拟从一个特定方向发出的平行光。这种光源常用于模拟太阳光,因为它照射在场景中的所有物体上,且光线是平行的。

//4.Material
BasicMaterial:最简单的材质,没有光照效果,只有一种基本颜色。

LambertMaterial:Lambert 材质是一种经典的用于表现暗淡表面的材质,不会产生光亮效果。

PhongMaterial:Phong 材质是一种用于表现金属和光滑表面的材质,具有光泽效果。

StandardMaterial:标准材质是基于物理渲染的材质,具有更高的视觉真实感,支持镜面反射、折射等效果。

PhysicalMaterial:物理材质是标准材质的扩展,提供更多的物理属性和参数,例如金属度(metalness)和粗糙度(roughness)。

ToonMaterial:卡通材质是一种用于模拟卡通风格的材质,通常具有扁平的着色效果。

ShaderMaterial:着色器材质允许用户编写自定义的着色器程序,以实现更复杂的渲染效果。

SpriteMaterial:精灵材质用于渲染 2D 精灵,常用于 UI 元素或粒子效果。

//5.骨骼
skeleton = new THREE.SkeletonHelper( model );
skeleton.visible = false;
scene.add( skeleton );

好的,我会为您解答关于WebGL three.js的阴影与实现物体动画的问题。首先,让我们来了解一下WebGL three.js是什么。 WebGL three.js是一款基于WebGL的JavaScript 3D库,可以帮助我们快速搭建3D场景和应用。接下来我们来讲解阴影和实现物体动画的方法。 一、阴影 阴影是模拟物体之间的阴影效果,让3D场景更加真实。在three.js中,我们可以通过设置Mesh的castShadow和receiveShadow属性来实现阴影效果。 1. 首先,我们需要在场景中添加光源,例如SpotLight或DirectionalLight。 2. 然后,在需要投射阴影的物体上设置castShadow为true。 3. 最后,在需要接收阴影的物体上设置receiveShadow为true。 代码示例: ```javascript // 添加光源 const light = new THREE.SpotLight(0xffffff); light.position.set(0, 100, 0); light.castShadow = true; scene.add(light); // 添加需要投射阴影的物体 const cube = new THREE.Mesh(new THREE.BoxGeometry(10, 10, 10), new THREE.MeshLambertMaterial({ color: 0xff0000 })); cube.castShadow = true; scene.add(cube); // 添加需要接收阴影的物体 const plane = new THREE.Mesh(new THREE.PlaneGeometry(200, 200, 1, 1), new THREE.MeshLambertMaterial({ color: 0xffffff })); plane.receiveShadow = true; plane.rotation.x = -Math.PI / 2; scene.add(plane); ``` 二、物体动画 在three.js中,我们可以通过Tween.js库来实现物体的动画效果。Tween.js是一款JavaScript动画库,可以帮助我们实现非常丰富的动画效果。 1. 首先,我们需要在HTML文件中引入Tween.js库文件。 2. 然后,在需要动画的物体上设置初始状态。 3. 最后,通过Tween.js库来设置物体的目标状态和动画效果,例如缓动动画(ease)或弹跳动画(bounce)。 代码示例: ```javascript // 引入Tween.js库文件 <script src="https://cdnjs.cloudflare.com/ajax/libs/tween.js/18.6.4/tween.min.js"></script> // 添加需要动画的物体 const cube = new THREE.Mesh(new THREE.BoxGeometry(10, 10, 10), new THREE.MeshLambertMaterial({ color: 0xff0000 })); cube.position.set(0, 0, 0); scene.add(cube); // 设置初始状态 const start = { x: 0, y: 0, z: 0 }; // 设置目标状态 const end = { x: 50, y: 50, z: 50 }; // 设置动画效果 const tween = new TWEEN.Tween(start) .to(end, 1000) .easing(TWEEN.Easing.Quadratic.InOut) .onUpdate(() => { cube.position.set(start.x, start.y, start.z); }) .start(); ``` 以上是关于WebGL three.js阴影与实现物体动画的方法,希望能够对您有所帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值