threejs 正交相机实现视图指示器

突发其想,想梳理一下正交相机的内容,虽然不是很常用,但也是有必要学习的。
正交相机一般用在建模和工业UI上面,它观察的物体不会因为远近而引起视觉大小变化。
构造函数:
OrthographicCamera( left : Number, right : Number, top : Number, bottom : Number, near : Number, far : Number )
left — 摄像机视锥体左侧面。
right — 摄像机视锥体右侧面。
top — 摄像机视锥体上侧面。
bottom — 摄像机视锥体下侧面。
near — 摄像机视锥体近端面。
far — 摄像机视锥体远端面。

实例应用:创建视角指示器
在这里插入图片描述
主要是最近遇到有些朋友在问,怎么创建视角指示器,所以写下这篇文章,希望对你们有所帮助。

**1.**先创建两个场景、两个相机,其中一个透视相机(PerspectiveCamera)作为主场景相机,一个正交相机(OrthographicCamera)作为视角辅助;

				scene=new THREE.Scene();//主场景
				scene.background=new THREE.Color(0xf0f0f0);
				sceneOrtho=new THREE.Scene();	//视角场景

//主场景相机
				camera=new THREE.PerspectiveCamera(60,window.innerWidth/window.innerHeight,0.1,1000);
				camera.position.set(0,100,200);
				camera.lookAt(scene.position);

//正交相机				
				var aspect=window.innerWidth/window.innerHeight;
				cameraOrtho=new THREE.OrthographicCamera(frustumSize*aspect/-2,frustumSize*aspect/2,frustumSize/2,frustumSize/-2,1,500)
				cameraOrtho.position.set(0,0,300);

**2.**向场景增加物体,视角场景增加一个立方体和坐标轴绑定。

				var materialArr=[];
				materialArr.push(new THREE.MeshBasicMaterial({color: 0x009e60}));
				materialArr.push(new THREE.MeshBasicMaterial({color: 0x0051ba}));
				materialArr.push(new THREE.MeshBasicMaterial({color: 0xffd500}));
				materialArr.push(new THREE.MeshBasicMaterial({color: 0xff5800}));
				materialArr.push(new THREE.MeshBasicMaterial({color: 0xc41e3a}));
				materialArr.push(new THREE.MeshBasicMaterial({color: 0xff00ff}));
				//添加一个多材质的立方体
				viewBox=new THREE.Mesh(new THREE.BoxBufferGeometry(50,30,50),materialArr);
				sceneOrtho.add(viewBox);
				var axes=new THREE.AxesHelper(100);
				viewBox.add(axes);

**3.**渲染,

			var insetWidth,insetHeight;	
			insetWidth=insetHeight=window.innerHeight/4;
			
	/*		function onWindowResize(){	//自适应窗口,没有缩放窗口可以不要			
				var aspectValue=window.innerWidth/window.innerHeight;
				//透视相机
				camera.aspect=aspectValue;
				camera.updateProjectionMatrix();
				
				//正交相机
				cameraOrtho.left=frustumSize*aspectValue/-2;
				cameraOrtho.right=frustumSize*aspectValue/2;
				cameraOrtho.top=frustumSize/2;
				cameraOrtho.bottom=frustumSize/-2;
				cameraOrtho.updateProjectionMatrix();
				
				renderer.setSize(window.innerWidth,window.innerHeight);
			} */
			
			function render(){				
			 renderer.autoClear = false;
			 //设置主场景视区大小
			 renderer.setViewport(0, 0, window.innerWidth, window.innerHeight)
			 renderer.render(scene, camera);
			 
			 //复制主场景相机的信息,位置,四元数等
			 cameraOrtho.position.copy(camera.position);
			 cameraOrtho.quaternion.copy(camera.quaternion);
			 cameraOrtho.lookAt(scene.position);
			  //设置副场景视区大小,(x, y,width,height).
			 renderer.setViewport(1200, 500, 200, 200)
			 renderer.render(sceneOrtho, cameraOrtho);
			}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: three.js场景编辑器是一个用于创建和编辑three.js场景的图形用户界面工具。它允许用户通过可视化方式添加、删除和修改场景中的对象,同时还提供了一些工具和功能来进行相机控制、光源调整、材质管理等操作。 通过场景编辑器,用户可以很容易地创建一个包含几何体、光源和材质的三维场景。用户可以通过简单的拖拽和点击操作在场景中添加几何体,例如立方体、球体等,也可以导入自定义的模型文件来创建更复杂的几何体。 场景编辑器还提供了对场景中对象的属性进行编辑的功能,例如改变几何体的位置、旋转和缩放等操作。用户可以通过鼠标控制来实时预览对象的变化,并进行微调。 此外,场景编辑器还提供了相机控制工具,允许用户通过拖拽和缩放来调整视角和镜头位置。用户可以轻松切换不同的相机模式,例如透视投影和正交投影,并实时查看相机视图。 光源也是场景编辑器中的一个重要组件。用户可以调整光源的强度、颜色和位置等属性,并实时预览光源对场景的影响。此外,还可以添加多个光源,以实现更复杂的光照效果。 最后,场景编辑器还提供了材质管理功能,允许用户为对象应用不同的材质和纹理。用户可以选择不同的材质类型,并进行颜色、透明度、纹理等属性的设置。 总之,three.js场景编辑器是一个强大的工具,它简化了创建和编辑three.js场景的过程,使用户能够以可视化的方式快速构建出复杂的三维场景。它适用于开发人员、设计师和艺术家等各个领域的用户,为他们提供了一个直观、高效的创作平台。 ### 回答2: three.js场景编辑器是一个用于创建、编辑和管理three.js场景的工具。它提供了一个直观的用户界面,使用户可以轻松地添加、移动或删除对象,设置对象的属性,如位置、旋转和缩放,并为对象应用材质和纹理。场景编辑器还允许用户通过拖放操作从预设库中添加对象,如几何体、灯光和相机,以及从文件系统导入其自定义模型。除了基本操作之外,场景编辑器还提供了高级功能,如动画编辑和脚本编写。 使用场景编辑器,用户可以快速构建复杂的三维场景,无需编写代码。它为用户提供了一种可视化的方式来创建和调整场景中的元素,使用户能够实时查看并修改场景。在编辑器中创建的场景可以保存为JSON或OBJ格式,并且可以轻松地导出到其他three.js项目中使用。 场景编辑器还具有与其他用户共享场景的功能。用户可以将他们创建的场景分享给其他用户,或者从其他用户那里获取灵感和借鉴。这为用户提供了一个交流和学习的平台,有助于促进three.js社区的发展和成长。 总之,three.js场景编辑器是一个功能强大且易于使用的工具,它为用户提供了创建和编辑three.js场景的便捷方式。无论是初学者还是有经验的开发人员,都可以受益于它的功能,从而更轻松地构建出惊人的三维场景。 ### 回答3: three.js场景编辑器是一个用于创建和编辑3D场景的工具。它基于three.js库,提供了一个用户友好的界面,使用户可以轻松地添加、编辑和管理3D模型、光源、材质、纹理等元素,以创建逼真的3D场景。 场景编辑器的主要功能包括创建和管理场景、添加和调整3D模型、设置光源和阴影、调整材质和纹理等。用户可以通过拖拽操作将3D模型导入场景,并使用编辑器提供的工具进行位置、旋转和缩放等调整。同时,用户可以选择不同类型的光源,并设置其位置、颜色和强度来实现适合场景的光照效果。此外,编辑器还提供了丰富的材质和纹理选项,让用户可以为模型添加不同的外观效果。 除了基本的编辑功能,场景编辑器还提供了一些高级功能,如动画编辑和脚本编写。用户可以使用动画编辑功能创建和编辑模型的动画效果,包括模型的运动、旋转和缩放等。同时,用户还可以使用脚本编写功能,通过编写JavaScript代码来实现更复杂的交互和动画效果。 总之,three.js场景编辑器是一个功能强大且易于使用的工具,它为用户提供了便捷的方式来创建和编辑3D场景。无论是开发者还是设计师,都可以利用这个编辑器来实现自己的创意,并打造出独特而精美的3D场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值