three.js学习笔记 为模型增添物理效果

本文介绍如何在three.js场景中为从3Dmax或Blender导出的模型赋予物理效果。尽管Physijs提供了一些物理功能,但不直接支持模型加载。作者分享了一个方法,通过修改r71版本的加载方式,让模型能够具备重力和碰撞检测等物理特性。
摘要由CSDN通过智能技术生成

前一篇介绍了物理引擎Physijs,场景中的对象只需要用特定的Physijs对象封装一下便可以在场景中展现物理效果(重力、碰撞检测等)。但Physijs并没有为模型的加载提供一种特定的方法。所以由3Dmax或是Blender等建模软件创建的模型通过传统方式加载到场景中并没有物理效果。

为了使模型具有物理效果这里我使用了一种方法(才疏学浅,仅供参考)。

这里使用的是r71的加载方式,最新的有所不同。

正常加载:

				var loader = new THREE.OBJMTLLoader();
				loader.load('obj/three.obj', 'obj/three.mtl', function(object) {
					model =object;
					scene.add(model);
					}, onProgress, onError);
物理场景加载:

			var loader = new THREE.OBJMTLLoader();
				loader.load('obj/three.obj', 'obj/three.mtl', function(object) {
					model = object;

					for (var i = 0; i < model.children.length; i++) {
						model.children[i].castShadow = true;
						var ground_material = Physijs.createMaterial(
							model.children[i].material,
							1,
							0
						);
						var mesh = new Physijs.ConcaveMesh( 
							model.children[i].geometry,
							ground_material,
							0
						);
						scene.add(mesh);
					}

					scene.add(m
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值