Three.js学习笔记(一)

Three.js学习笔记(一)

1.四大组建

1.场景

任何要显示的东西,放在场景的任何位置

一个页面可以有多个场景

实现方式

THREE.Scene = function()

2.相机

浏览器中所能看到的东西,就是由相机拍摄出来。即将相机能看到的内容显示在浏览器画面上

分类
1.透视相机

近大远小+灭点

2.正投影相机

远处和近处一样大,也称正交相机

参数
THREE.PerspectiveCamera = function(fov,aspect,near,far)

fov:视角,我的理解是以相机为中心,能看到的最高和最低之间的夹角,即 θ \theta θ

视角

aspect:近平面的宽度除以高度,即图中的 w h \frac{w}{h} hw

near:相机和近处截面的距离

far:相机和远处截面的距离

例子
var camera = new THREE.PerspectiveCamera(45,width/height,1,1000)
scene.add(camera)

3.渲染器

计算的过程称为渲染,即怎么将眼前的场景显示到屏幕上

代码:

THREE.WebGLRenderer()

4.几何体

显示在场景中的对象

2.例子

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="../Js/three.js"></script>  <!--注意three.js的路径-->
	</head>
	<body>
		<script>
			var scene =new THREE.Scene();
			
			var camera = new THREE.PerspectiveCamera(75,window.innerWidth/window.innerHeight,1,1000)//不懂为什么要这个大小,以后回来填坑
			
			var renderer = new THREE.WebGLRenderer();
			renderer.setClearColor("#ffffff");//背景颜色?填坑
			renderer.setSize(window.innerWidth,window.innerHeight);//不懂为什么要这个大小,以后回来填坑
			document.body.appendChild(renderer.domElement);
			
			var geometry = new THREE.CubeGeometry(2,2,2);
			var material = new THREE.MeshBasicMaterial({color:0xff0000});
			
			var cuba = new THREE.Mesh(geometry,material);
			
			scene.add(cuba);
			camera.position.z = 5;  //数值越大,图形越小,即离相机的距离越远
			function render(){
				requestAnimationFrame(render);
				cuba.rotation.x += 0.01;
				renderer.render(scene,camera);
			}
			render();
		</script>
	</body>
</html>

3.遇到的坑

  • 不知道错误在哪里。这个问题很致命,因为前期不知道在哪里看报错,导致我一行一行地校验代码,效率极其低下。

    • 解决办法:在浏览器中使用F12进入浏览器检查页面,点击console,即可查看哪里出错

在这里插入图片描述

4.关于使用软件问题:

1.HBuilder X轻量级,运行速度快,但代码补全和代码高亮这两块很头疼!
2.webstorm代码补全非常好,高亮也可以,但就是运行占用内存比较大
3.最近看到网上推荐atom,感觉挺好用的,有代码补全,界面看的也很舒适,最重要的是,atom可以实现实时预览!!!先用一段时间看看。

参考资料:Three.js教程,包含矩阵,着色器,模型加载,WebGL相关知识,学习用

小白入门,望各位大神多多包涵!!!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我会为您解答关于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
发出的红包

打赏作者

hzxwonder

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值