【问题标题】:Add envMap to model.json materials将 envMap 添加到 model.json 材质中
【发布时间】:2017-04-19 11:17:17
【问题描述】:

我已经将一个带有 blender 的对象导出为 .json 格式,以便使用 three.js 显示,一切顺利,我手动将所有地图添加到导出的文件中(不包含在导出器中,但一旦在搅拌器中很好地映射,手动添加很容易)

model.json:

"materials":[{
    "DbgColor":15658734,
    "DbgIndex":0,
    "DbgName":"FrontCol",
    "blending":"NormalBlending",
    "shading":"phong",
    "colorDiffuse":[1.0,1.0,1.0],
    "mapDiffuse" : "model_d.png",
    "mapDiffuseWrap" : ["repeat", "repeat"],
    "colorSpecular":[0.8,0.4,0.0],
    "mapSpecular" : "model_s.jpg",
    "mapBump" : "model_b.jpg",
    "mapBumpScale" : 4
}

我需要应用一个环境映射来获得更丰富的反射,通常很容易用 three.js 定义并添加

index.html:

var material = new THREE.MeshPhongMaterial( {
    envMap: mapEnvironment
} );

这可以吗?如果是,如何?

【问题讨论】:

    标签: javascript json three.js mapping blender


    【解决方案1】:

    我正在为类似的事情苦苦挣扎,虽然我无法直接在 JSON 中加载它,但这里的解决方法是在导入期间为所有网格分配它。然后,根据您的材质反射率,您是否会在材质上看到它:

    var objectLoader = new THREE.ObjectLoader();
    objectLoader.load( "file.json" , function ( obj ) {
        obj.traverse( function ( child ) {
            if ( child instanceof THREE.Mesh ) {    
    
                child.material.envMap = mapEnvironment;
    
                            }
        });
    

    这使您的材料属性不受 JSON 影响,只需将此属性添加到顶部即可。

    编辑:这是 JSONLoader 的版本:

    var loader = new THREE.JSONLoader();
    loader.load( 'file.json', function ( geometry, materials ) {
        for ( var k in materials ) {
            materials[k].envMap = mapEnvironment;    
        }
    
        mesh = new THREE.Mesh(geometry, new THREE.MultiMaterial(materials));
        scene.add( mesh );
    });
    

    【讨论】:

    • 我在运行中尝试过,我使用了 THREE.JSONLoader 并且我无法让它工作,既没有使用 THREE.ObjectLoader 也没有再次使用你的代码(它破坏了渲染)......我' m 还在开始...
    • 好的,这里是 JSON 加载器。我不确定你使用的是什么加载器。
    • var loader = new THREE.JSONLoader(); loader.load( 'file.json', function ( geometry, materials ) { for ( var k in materials ) { materials[k].skinning.envMap = mapEnvironment; } mesh = new THREE.Mesh(geometry, new THREE.MultiMaterial(materials)); scene.add( mesh ); });
    • 请忽略评论并检查答案编辑(格式错误和错误,不知道如何编辑)。我是新来的。
    • 不是新的three.js!太好了,你从哪里得到这些 sn-ps,我总是觉得很愚蠢,三有一个巨大的图书馆,我找不到这些小东西......(ps 请投票给我的问题,这也让你的答案更有价值)
    猜你喜欢
    • 1970-01-01
    • 2017-06-16
    • 2021-05-16
    • 2016-01-11
    • 2019-02-25
    • 1970-01-01
    • 2022-07-13
    • 2022-08-08
    • 2019-04-20
    相关资源
    最近更新 更多