Three.js使用JSON从blender导入对象

Three.js importing object using JSON from blender

本文关键字:blender 导入 对象 JSON js 使用 Three      更新时间:2023-09-26

我使用Blender插件导出JSON文件,但由于某些原因,我无法导出对象的纹理。

JSON文件的materials部分看起来像:

    "materials" : [ {
    "DbgColor" : 15658734,
    "DbgIndex" : 0,
    "DbgName" : "new",
    "blending" : "NormalBlending",
    "colorAmbient" : [0.6400000190734865, 0.6400000190734865, 0.6400000190734865],
    "colorDiffuse" : [0.6400000190734865, 0.6400000190734865, 0.6400000190734865],
    "colorEmissive" : [0.1, 0.1, 0.1],
    "colorSpecular" : [0.5, 0.5, 0.5],
    "depthTest" : true,
    "depthWrite" : true,
    "shading" : "Lambert",
    "specularCoef" : 50,
    "transparency" : 1.0,
    "transparent" : false,
    "vertexColors" : false
}],

JavaScript部分是:

    var loader = new THREE.JSONLoader();          
loader.load( "./try.js", function(geometry,materials) {
    material = new THREE.MeshFaceMaterial( materials );
    object = new THREE.Mesh(geometry,material);
    object.scale.set(0.5,0.5,0.5);
    object.position.x=0;
    object.position.y=0;
    object.position.z=0;
});
loader.onLoadComplete=function(){ //render
}

我遵循了这个https://www.youtube.com/watch?v=cUkNOF8eORA以创建对象。(不是我想做的,但这样我们就有了相同的起点)

我发现:使用各种网格-UV方法,使用blender在几何体上映射纹理,导出器生成的.json文件将存储有关UV映射的信息。该UV贴图当然与您选择的纹理图像有关。

JSON文件支持很多加载程序不支持的东西(还没有?),比如动画、相机和灯光特性等。加载程序不喜欢的功能之一正是我想要的。在JSON文件的规范中,似乎可以为纹理添加图像文件的名称。但无论是出口商还是装载商都无法用它做点什么

编辑:此https://github.com/mrdoob/three.js/pull/5502pull请求表明他们正在处理它,也许下一个版本的three.js将在

中工作