提交 58bbd02e 编写于 作者: A alteredq

Added handling of mesh colliders to scene loader. Changed Blender scene...

Added handling of mesh colliders to scene loader. Changed Blender scene exporter to make mesh colliders invisible.
上级 f7d97caf
此差异已折叠。
此差异已折叠。
......@@ -136,7 +136,15 @@ THREE.SceneLoader.prototype = {
result.objects[ dd ] = object;
if ( o.meshCollider ) {
var meshCollider = THREE.CollisionUtils.MeshColliderWBox( object );
THREE.Collisions.colliders.push( meshCollider );
}
}
}
......
......@@ -51,14 +51,14 @@ THREE.CollisionUtils.MeshColliderWBox = function( m ) {
for( var i = 0; i < mvl; i++ ) {
vertices.push( new THREE.Vector3( mv[i].position.x, mv[i].position.y, mv[i].position.z) );
vertices.push( new THREE.Vector3( mv[ i ].position.x, mv[ i ].position.y, mv[ i ].position.z ) );
}
for( var i = 0; i < mfl; i++ ) {
faces.push( mf[i].a, mf[i].b, mf[i].c );
normals.push( new THREE.Vector3( mf[i].normal.x, mf[i].normal.y, mf[i].normal.z) );
faces.push( mf[ i ].a, mf[ i ].b, mf[ i ].c );
normals.push( new THREE.Vector3( mf[ i ].normal.x, mf[ i ].normal.y, mf[ i ].normal.z ) );
}
......
......@@ -152,6 +152,10 @@ THREE.CollisionSystem.prototype.rayTriangle = function( ray, p0, p1, p2, n, mind
var e1 = THREE.CollisionSystem.__v1,
e2 = THREE.CollisionSystem.__v2;
// do not crash on quads, fail instead
//if ( !n ) n = THREE.CollisionSystem.__v3;
e1.sub( p1, p0 );
e2.sub( p2, p1 );
n.cross( e1, e2 )
......
......@@ -135,7 +135,7 @@ TEMPLATE_OBJECT = """\
"rotation" : %(rotation)s,
"quaternion": %(quaternion)s,
"scale" : %(scale)s,
"visible" : true,
"visible" : %(visible)s,
"castsShadow" : %(castsShadow)s,
"meshCollider" : %(meshCollider)s
}"""
......@@ -994,9 +994,13 @@ def generate_objects(data):
if len(group_ids) > 0:
group_string = generate_string_list(group_ids)
castsShadow = generate_bool_property(obj.THREE_castsShadow)
meshCollider = generate_bool_property(obj.THREE_meshCollider)
castsShadow = obj.THREE_castsShadow
meshCollider = obj.THREE_meshCollider
visible = True
if obj.draw_type in ["BOUNDS", "WIRE"] and meshCollider:
visible = False
object_string = TEMPLATE_OBJECT % {
"object_id" : generate_string(object_id),
"geometry_id" : generate_string(geometry_id),
......@@ -1008,8 +1012,9 @@ def generate_objects(data):
"quaternion" : generate_vec4(quaternion),
"scale" : generate_vec3(scale),
"castsShadow" : castsShadow,
"meshCollider" : meshCollider
"castsShadow" : generate_bool_property(castsShadow),
"meshCollider" : generate_bool_property(meshCollider),
"visible" : generate_bool_property(visible)
}
chunks.append(object_string)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册