【问题标题】:MeshPhongMaterial generates to much reflectionsMeshPhongMaterial 产生大量反射
【发布时间】:2021-12-22 04:53:54
【问题描述】:

我正在尝试在 Forge 中创建自己的材质,它的底部有一个 THREE.js 引擎。

我要添加的材质是 MeshPhongMaterial,我使用它来添加凹凸贴图。在下面的图片中,都是面板上的水平线。

当我在模型中进行小幅旋转时,如两个图像所示,选择的颜色很快变得更暗,这是我不想要的。顶部的图像是我想要保留的,底部的图像是我在模型中旋转时发生的。

我不是这方面的专家,所以如果有人可以尝试一些技巧,我会很高兴。

我的代码如下所示:

textureLoader.load(textureUrl, (texture) => {

                texture.wrapS = THREE.RepeatWrapping;
                texture.wrapT = THREE.RepeatWrapping;

                const material = new THREE.MeshPhongMaterial({
                    bumpScale: 0.3,
                    color: new THREE.Color (color.r / 255, color.g / 255, color.b / 255),
                    reflectivity: 0.0,
                    shading: 2,
                    side: 2,
                    shininess: 1,
                    specular: new THREE.Color(color.r / 255, color.g / 255, color.b / 255),
                });

                material.bumpMap = texture;

                material.disableEnvMap = false;

                materials.addMaterial(materialHash, material, true);
            });

【问题讨论】:

    标签: three.js autodesk-forge


    【解决方案1】:

    尝试使用 MeshLambert 材料代替 Phong...

    https://gist.github.com/wallabyway/4503609e84a2b612b27138abba8aa3b7

    更新: 您可以覆盖材料(来自 SVF)...

    类似这样的:

    viewer = NOP_VIEWER;
    
    const material = new THREE.MeshPhongMaterial({
                    side: THREE.DoubleSide,
                    color: new THREE.Color(1.0, 0.0, 0.0),
                    reflectivity: 0.0,
                    shininess: 0
                });
    material.disableEnvMap = false;
    viewer.impl.matman().addMaterial('test', material, true);
    
    const tree = viewer.model.getInstanceTree();
    const frags = viewer.model.getFragmentList();
    tree.enumNodeFragments(tree.getRootId(), function (fragid) { frags.setMaterial(fragid, material); }, true);
    

    【讨论】:

    • 谢谢迈克尔。一个问题,当我通过模型导数 api 运行此 Revit 模型以获取 svf 时,导数正在生成 MeshPhong 材质,并且它们没有这些反射量。当我自己设置它时,我发现很难应付,关于反射的属性对查看器没有任何影响。你能回答吗?
    • 好的,迈克尔,我明白了。但这意味着我应该对来自衍生服务的材料不满意,并发现使用我自己的材料要好得多。我的情况正好相反。我认为衍生产品的材料似乎比我自己使用的材料好,因为它们反映的不多。 Si 我无法理解如何通过three.js 自己创建这些材料。我玩过很多属性,但强大的反射一直都在那里。我错过的一些财产。 ?
    猜你喜欢
    • 2011-04-06
    • 2021-11-17
    • 2020-03-11
    • 2015-06-24
    • 2013-02-16
    • 2015-08-22
    • 2014-09-04
    • 2013-11-15
    • 2017-10-05
    相关资源
    最近更新 更多