2013-12-08 131 views
2

我有一些基本问题(我认为),当我尝试从Blender导出场景到Babylon.js。我想我不太了解纹理是如何工作的。Babylon.js质地从搅拌器

让我们举一个基本的例子。我在Blender上创建了一个新场景。有合适的灯光,相机和立方体。我在多维数据集选项上没有改变。我只是在标准材质上应用jpg的纹理。它看起来像这样:

https://puu.sh/5FU6k.jpg

我用的是巴比伦出口有.babylon文件。但是当我输入它时,纹理不适用。

结果:

https://puu.sh/5FUcM.jpg

我真的不明白为什么... 是否有一些特别的东西做的,使纹理被导入?

这里是我的导入代码:

<script> 
var canvas = document.getElementById("renderCanvas"); 
var engine = new BABYLON.Engine(canvas, true); 
BABYLON.SceneLoader.Load("", "test.babylon", engine, function (newScene) { 
    // Wait for textures and shaders to be ready 
    newScene.executeWhenReady(function() { 
     // Attach camera to canvas inputs 
     newScene.activeCamera.attachControl(canvas); 

     // Once the scene is loaded, just register a render loop to render it 
     engine.runRenderLoop(function() { 
      newScene.render(); 
     }); 
    }); 
}, function (progress) { 
    // To do: give progress feedback to user 
}); 
</script> 
+0

Got it!当在Babylon.js中使用纹理时,在Blender中应用纹理之前,必须展开UV贴图! –

+1

你应该发布,作为回答 – JohnB

回答

2

Shivaan Keldon(谁问的问题)在评论的答案是:

明白了!当在Babylon.js中使用纹理时,在Blender中应用纹理之前,必须展开UV贴图!

1

查找diffuseTexture属性从test.babylon文件,并与您的图像路径如更换所有属性值:

"diffuseTexture":{"name":"images/16.png"} 

或使用添加纹理值的JavaScript例如:

VAR floorMaterial = newScene.materials [3 ]。

var floorTexture = new BABYLON.Texture(“images/06.jpg”,newScene);

+0

或使用JavaScript添加纹理值例如:var floorMaterial = newScene.materials [3]; var floorTexture = new BABYLON.Texture(“images/06.jpg”,newScene); –

+0

请将评论中的代码添加到您的答案的主体中。 – NSNoob