【问题标题】:Rendering very large model of Blender in Three.js在 Three.js 中渲染非常大的 Blender 模型
【发布时间】:2012-12-11 11:41:18
【问题描述】:

我有一个非常大的 Blender 模型(json 大约 70 Mb)。 Three.js 可以正常渲染这样的模型吗?使用以下代码加载模型:

loader = new THREE.JSONLoader();

callbackDice = function(geometry) {
    createMesh(geometry);
};
loader.load(file, callbackDice);

function createMesh(geometry) {
     mesh = new THREE.Mesh(geometry, new THREE.MeshLambertMaterial( { vertexColors: THREE.FaceColors, wireframe: false } ));                   
     mesh.overdraw = true;
     scene.add(mesh);                    
 }

我无法通过近似形状来减少描述它的基元的数量(每个基元都有自己的动态变化的颜色)。下面的代码改变了图元的颜色

for ( var i = 0; i < mesh.geometry.faces.length; i ++ ) {
    var face = mesh.geometry.faces[ i ];
    face.color.setHex('0x'+ color value);
}
mesh.geometry.colorsNeedUpdate = true;

如果无法使用 Three.js,请建议任何其他使用 WebGL 的库来解决此问题。

【问题讨论】:

  • 请问您是如何读取/写入 70 mb JSON 文件的?我面临着打开/读取 4 mb 的 JSON 文件。
  • @Valay 你对我如何带来文件或渲染时间感兴趣吗?
  • 我对您如何携带文件感兴趣。实际上我没有使用JSONLoader()。我有一个带有单个函数的 js 文件,它返回 json 对象。但是有 18000 个对象,每个对象有 15 个成员/属性。
  • 首先,我只有一组向量和曲面。然后,使用JSON Model format 3.1 创建描述我的模型的 json 文件。通过 GET 请求将文件传输到脚本。

标签: json webgl three.js


【解决方案1】:

BufferGeometry 一定可以做到这一点。看看webgl_buffergeometry 示例。它渲染了 160000 个三角形,每个三角形都有自己的颜色。不过,BufferGeometry 不支持线框和平面着色。

【讨论】:

    猜你喜欢
    • 2014-04-28
    • 2020-03-29
    • 2016-10-12
    • 2020-11-17
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2017-10-16
    相关资源
    最近更新 更多