【问题标题】:Problems properly rendering model in three.js在 three.js 中正确渲染模型的问题
【发布时间】:2014-05-14 14:40:44
【问题描述】:

我正在使用 three.js 尝试用线框渲染一个全白的模型,但我遇到了问题。当我尝试渲染模型时,它是纯黑色的。如果我尝试为模型指定白色材质,则没有效果。如果我尝试将模型的几何形状和材质组合到网格中,然后在场景中进行渲染,我会在 three.js 缩小文件中看到 f.makeGroups 错误。完整的错误是

TypeError: f.makeGroups is not a function

我用来渲染的代码如下:

    var SCREEN_WIDTH = 800;
    var SCREEN_HEIGHT = 600;

    var blue = 0x03106D;
    var white = 0xFFFFFF;
    var black = 0x000000;
    var orange = 0xFF6600;

    // this function is executed on each animation frame
    function animate(){
        // render
        renderer.render(scene, camera);

        // request new frame
        requestAnimationFrame(function(){
        animate();
        });
    }

    // renderer
    var renderer = new THREE.WebGLRenderer();
    renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);
    renderer.setClearColor(0xFFFFFF, 1);
    document.body.appendChild(renderer.domElement);

    // camera
    var camera = new THREE.PerspectiveCamera(45, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 1000);
    camera.position.z = 700;

    var facemat = new THREE.MeshBasicMaterial( { color: white, opacity: 1.0, shading: THREE.FlatShading } );
    var wiremat = new THREE.MeshBasicMaterial( { color: blue, opacity: 1.0, wireframe: true, wireframeLinewidth: 1.0 } );
    var Material = [facemat,wiremat];

    // scene
    var scene = new THREE.Scene();

    // cube
    var vrmlLoader = new THREE.VRMLLoader();

    vrmlLoader.addEventListener('load', function (event) {
        var object = event.content;
        var mesh = new THREE.Mesh(object, Material);
        scene.add(mesh);
    });

    vrmlLoader.load("ship.wrl");

    // start animation
    animate();

我还确认我的模型正在使用three.js editor

【问题讨论】:

    标签: javascript three.js mesh


    【解决方案1】:

    var mesh = new THREE.Mesh( object, [facemat,wiremat] )?你编的? :) 您不能将数组作为材料传递。我猜WebGLRenderer 可以提供更好的错误信息...

    另外,我已经多次看到这种模式(我想知道它是从哪里来的?):

    function animate(){
        renderer.render(scene, camera);
        requestAnimationFrame(function(){
        animate();
        });
    }
    

    应该是这样的:

    function animate(){
        renderer.render(scene, camera);
        requestAnimationFrame(animate);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-29
      • 2020-11-11
      • 2014-04-28
      • 2016-02-14
      • 1970-01-01
      • 2018-02-25
      • 2012-12-11
      • 2015-12-17
      相关资源
      最近更新 更多