我正在尝试将纹理应用于从Blender 2.78b导出的简单3维立方体模型(事实上,默认的搅拌机立方体)。我以标准的three.js JSON格式导出模型。我意识到我应该能够在Blender中在几何体的顶部应用纹理,但我想要" style"运行时在three.js中的blender模型。因此,我只对使用blender为我的网格提供几何图形感兴趣。
我创建了一个plunker来说明情况。
我在 blenderGeom 中加载一个blender模型,然后将一个MeshBasicMaterial应用 map 设置为一个砖纹理(不幸的是,我必须将纹理加载为Base64,因为plunker不允许你上传图像)。然后我将完全相同的材质/纹理应用于原生的three.js BoxGeometry nonBlenderCubeGeom :
function loadModel() {
console.log('now in loadModel');
var promise = new Promise( (resolve, reject) => {
var loader = new THREE.JSONLoader();
// load a resource
loader.load(
'cube.json', (blenderGeom, materials) => {
console.log(`loadModel: now loading cube: geomery=${geometry}`);
let cubeMaterial = new THREE.MeshBasicMaterial({
color: 0xff8080,
wireframe: false,
map: brickTexture
})
nonBlenderCubeGeom = new THREE.BoxGeometry(50, 50, 50);
blenderCubeGeom = blenderGeom;
blenderCube = new THREE.Mesh(blenderGeom, cubeMaterial); //no work
blenderCube.position.x = -20;
nonBlenderCube = new THREE.Mesh(nonBlenderCubeGeom, cubeMaterial); //work
nonBlenderCube.position.x = 20;
blenderCube.scale.set(10, 10, 10);
scene.add(blenderCube);
scene.add(nonBlenderCube);
正如您在运行plunker时所看到的,只有右侧的原生three.js对象被纹理化,左侧的blender型号不是:
我做错了吗?它只是一个限制,你只能在Blender中构建一个模型吗?
Three.js r84。搅拌机2.78b。我在three.js方面假设这个,但我也打开了搅拌机。
非常感谢。