Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion src/view/threejs/asset/ThreeJsonAsset.js
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,17 @@ var ThreeJsonAsset = IAsset.$extend(
material = (threejsData.materials.length === 1 ? threejsData.materials[0] : new THREE.MeshFaceMaterial(threejsData.materials));

this.mesh = TundraSDK.framework.renderer.createSceneNode();
this.mesh.add(new THREE.Mesh(threejsData.geometry, material));

var threeMesh = undefined;
if (threejsData.geometry.bones !== undefined && threejsData.geometry.bones.length > 0) {
threeMesh = new THREE.SkinnedMesh(threejsData.geometry, material);
material.skinning = true;
}
else {
threeMesh = new THREE.Mesh(threejsData.geometry, material)
}

this.mesh.add(threeMesh); //this.mesh is confusingly named: is not a mesh but an object3d parent for mesh
}
else
this.log.error("Parsing failed, three.js didnt return a valid geometry for", this.name);
Expand Down
11 changes: 8 additions & 3 deletions src/view/threejs/entity-components/EC_Mesh_ThreeJs.js
Original file line number Diff line number Diff line change
Expand Up @@ -193,12 +193,17 @@ var EC_Mesh_ThreeJs = EC_Mesh.$extend(
var materialAsset = this.materialAssets[i];
if (materialAsset instanceof IAsset || materialAsset instanceof THREE.Material)
submesh.material = (materialAsset instanceof IAsset ? materialAsset.material : materialAsset);
else
submesh.material = TundraSDK.framework.renderer.materialWhite;

else {
//only set materialWhite if no material is set from before.
//-- in case of three json assets, the material is already set by the mesh loader.
if (submesh.material === null) { //is this what actually happens when no material is set?
submesh.material = TundraSDK.framework.renderer.materialWhite;
} //@todo: probably breaks using the EC editor to *remove* material ref to default to white.
}
submesh.receiveShadow = (submesh.material.hasTundraShadowShader !== undefined && submesh.material.hasTundraShadowShader === true);
submesh.castShadow = this.castShadows;
}

if (this.materialAssets.length > numSubmeshes)
{
this.log.warnC("Too many materials for target mesh " + this.meshAsset.name + ". Materials: " +
Expand Down