【问题标题】:Three.js - Load a model with material that doesn't require a light source to be seenThree.js - 使用不需要看到光源的材料加载模型
【发布时间】:2015-06-22 19:27:06
【问题描述】:

我目前正在使用 Three.js,版本 71。我首先使用搅拌机创建模型,然后将它们导出为 JSON 文件。然后我使用 THREE.JSONLoader 使用以下方法将模型加载到我的场景中:

this.jsonLoader.load(pathToModelFile, function(geometry, materials) {
  //...
});

材质列表仅在索引 0 处包含 THREE.MeshPhongMaterial。此材质似乎需要光源(例如 THREE.SpotLight)才能在我的场景中.否则,我的模型将是黑色的。

我基本上只是希望能够加载我的模型而不需要使用光源来查看它们。因此,我有以下问题,回答其中任何一个都可以解决我的问题:

  1. THREE.MeshPhongMaterial中是否有一些标志或属性我可以更改以允许在没有光源的情况下看到我的模型?
  2. 如果数字 1 不可能,有没有办法使用 THREE.JSONLoader 给我一种不需要光源的不同材料?例如,像 THREE.MeshBasicMaterial?
  3. 是否有某种方法可以从已经设置了所需标志/属性(如果可能)的搅拌机中导出我的模型?

听起来我遇到了这个人在以下链接中提到的同样问题,但他从未收到答案:Switch lighting of THREE.MeshPhongMaterial on / off dynamically

【问题讨论】:

    标签: javascript three.js blender 3d-model


    【解决方案1】:

    1 不知道,不考虑

    2 是的

    var jsonLoader = new THREE.JSONLoader();
    jsonLoader.load(model, addthree1ToScene);
    
    function addthree1ToScene( geometry, materials ) 
      {
    
    
      material = new THREE.MeshBasicMaterial(blahblah);
    
    
      three1 = new THREE.Mesh( geometry, material );
      scene.add( three1 );
      console.log(three1);
    
     }
    

    3 是的,在 Blender 中,您可以在导出之前在网格上设置材质类型,或者您可以在导出的文件中编辑材质变量

    编辑: 或者最愚蠢的方式,可以通过讨论这个答案来编辑导出的 Json 文件中的材料。

    【讨论】:

    • 对于#2,这将从模型中移除纹理。有没有办法将 THREE.MeshPhongMaterial 转换为 THREE.MeshBasicMaterial 或其他任何方法?如果没有,有没有办法将我的纹理设置为 THREE.MeshBasicMaterial 或任何其他?
    • 我认为不可能转换材料,只能替换。您绝对可以在 JSON 文件中设置材质,在搅拌机中是在第三节中的材质比例...
    • 是否可以截取这些选项并将它们放在您帖子中的答案 3 下?不幸的是,我在搅拌机的三个部分中的任何一个部分都找不到这些选项(编辑模型时在右下角,当您要导出 JSON 文件时在左侧)。
    • 我没有意识到我正在使用搅拌机导出器来处理三个 js github.com/mrdoob/three.js/tree/master/utils/exporters/blender
    • 酷,我也是。这是设置的屏幕截图:imgur.com/5vEKcwk。你知道我用哪个来改变我要导出的材料吗?
    猜你喜欢
    • 1970-01-01
    • 2013-11-12
    • 2013-07-02
    • 2018-04-30
    • 2019-09-30
    • 2017-01-23
    • 2013-01-21
    • 2019-07-08
    • 1970-01-01
    相关资源
    最近更新 更多