Three.js : 如何将 3D JSON 模型添加到立方体网格的一个面上
Three.js : How to add a 3D JSON model to one face of the cube's mesh
我正在 Three.js 开发一个小型原型。我需要向长方体的其中一个面添加 3D JSON 模型。我可以将 3D 模型加载到场景中,但无法将该模型添加到立方体的特定面。
Three.js 脚本
boxGeometry = new THREE.BoxGeometry(25, 25, 90, 7, 7, 7);
var material = [
new THREE.MeshBasicMaterial({ color: "#000000", wireframe:true}),
new THREE.MeshBasicMaterial({ color: "#000000", wireframe:true}),
new THREE.MeshBasicMaterial({ color: "#000000", wireframe:true}),
new THREE.MeshBasicMaterial({ color: "#666699", wireframe:false}),
// load 3D truck model to the mesh here, instead of the image
new THREE.MeshBasicMaterial( { map: new THREE.TextureLoader().load( 'https://raw.githubusercontent.com/SatheeshKS10/MockRest/master/truck-front.png'), wireframe:false } ),
new THREE.MeshBasicMaterial({ color: "#000000", wireframe:true})
];
可以找到完整代码here
希望这对某些人有所帮助!!
正如@Marquizzo 提到的,我们需要根据需要定位/旋转 3D 对象,以将它们放置在场景中的确切位置。 Three.js 提供了许多方法来解析不同格式的 3D 对象,例如 - OBJLoader, GLTFLoader 等
下面是一个使用 OBJ 加载器的简单示例。
var mtlLoader = new THREE.MTLLoader();
mtlLoader.setTexturePath('/resources/');
mtlLoader.setPath('/resources/');
mtlLoader.load('3DModel.mtl', function(materials) { // this is optional to load material files !!
// we can skip this if we have only obj files for our 3D model
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials(materials);
objLoader.setPath('/resources/');
objLoader.load('3DModel.obj', function(object3) {
object3.rotation.set(3.15, 1.55, 0);
object3.position.y = -25;
object3.position.z = 10;
object3.position.x = 0;
scene.add(object3); // Object is added to the scene.
});
});
在上面的代码片段中,首先我们将加载MTL文件
然后我们将加载 3D 模型的 OBJ 文件。
接下来我们将对象旋转&定位到相应的位置。
我正在 Three.js 开发一个小型原型。我需要向长方体的其中一个面添加 3D JSON 模型。我可以将 3D 模型加载到场景中,但无法将该模型添加到立方体的特定面。
Three.js 脚本
boxGeometry = new THREE.BoxGeometry(25, 25, 90, 7, 7, 7);
var material = [
new THREE.MeshBasicMaterial({ color: "#000000", wireframe:true}),
new THREE.MeshBasicMaterial({ color: "#000000", wireframe:true}),
new THREE.MeshBasicMaterial({ color: "#000000", wireframe:true}),
new THREE.MeshBasicMaterial({ color: "#666699", wireframe:false}),
// load 3D truck model to the mesh here, instead of the image
new THREE.MeshBasicMaterial( { map: new THREE.TextureLoader().load( 'https://raw.githubusercontent.com/SatheeshKS10/MockRest/master/truck-front.png'), wireframe:false } ),
new THREE.MeshBasicMaterial({ color: "#000000", wireframe:true})
];
可以找到完整代码here
希望这对某些人有所帮助!!
正如@Marquizzo 提到的,我们需要根据需要定位/旋转 3D 对象,以将它们放置在场景中的确切位置。 Three.js 提供了许多方法来解析不同格式的 3D 对象,例如 - OBJLoader, GLTFLoader 等
下面是一个使用 OBJ 加载器的简单示例。
var mtlLoader = new THREE.MTLLoader();
mtlLoader.setTexturePath('/resources/');
mtlLoader.setPath('/resources/');
mtlLoader.load('3DModel.mtl', function(materials) { // this is optional to load material files !!
// we can skip this if we have only obj files for our 3D model
var objLoader = new THREE.OBJLoader();
objLoader.setMaterials(materials);
objLoader.setPath('/resources/');
objLoader.load('3DModel.obj', function(object3) {
object3.rotation.set(3.15, 1.55, 0);
object3.position.y = -25;
object3.position.z = 10;
object3.position.x = 0;
scene.add(object3); // Object is added to the scene.
});
});
在上面的代码片段中,首先我们将加载MTL文件 然后我们将加载 3D 模型的 OBJ 文件。
接下来我们将对象旋转&定位到相应的位置。