0

我已经使用 Three.js 创建了简单的示例,我之前用它构建了一些代码,但它没有组织为类,问题是在 mof=defying 代码之后视图中没有显示任何内容。

HTML 文件

<!DOCTYPE html>
<html>
<head>
    <title> </title>
</head>
<body>

<div id="scenecontainer"></div>

<script src="../js/libs/three.js/three.js"></script>
<script src="../js/libs/Detector.js"></script>
<script src="../js/libs/stats.min.js"></script>
<script src="../js/libs/RequestAnimationFrame.js"></script>

<script src="../js/lab/common/CommonExperiment.js"></script>
<script src="../js/lab/common/commonMain.js"></script>
</body>
</html>

main.js

var viewport;
var commonExperiment;

function main() {
    viewport = document.getElementById("scenecontainer");
    commonExperiment = new CommonExperiment(viewport);
    commonExperiment.addTestCube();
    commonExperiment.animate();
}

main();

CommonExperiment.js

function CommonExperiment(domElement, renderStatistics) {
    this.testMesh = undefined;

    this.scene = undefined;
    this.renderer = undefined;
    this.stats = undefined;
    this.camera = undefined;
    this.renderStatistics = ( renderStatistics != undefined ) ? renderStatistics : true;
    this.domElement = domElement;

    this.init();
}

CommonExperiment.prototype.init = function () {
    if (Detector.webgl) {
        this.renderer = new THREE.WebGLRenderer({
            antialias:true, // to get smoother output
            preserveDrawingBuffer:true
        });
    } else {
        Detector.addGetWebGLMessage();
        return;
    }


    this.renderer.setSize(window.innerWidth, window.innerHeight);
    this.domElement.appendChild(this.renderer.domElement);

    if (this.renderStatistics) {
        this.stats = new Stats();
        this.stats.domElement.style.position = 'absolute';
        this.stats.domElement.style.bottom = '0px';
        document.body.appendChild(this.stats.domElement);
    }

    // create a scene
    this.scene = new THREE.Scene();

    // put a camera in the scene
    this.camera = new THREE.PerspectiveCamera( 75, window.innerWidth / window.innerHeight, 1, 10000 );
    this.camera.position.z = 1000;
    this.scene.add(this.camera);



};

CommonExperiment.prototype.animate = function () {
    requestAnimationFrame(this.animate.bind(this));

    this.render();
//    console.log("ahmed");

    if (this.stats) {
        this.stats.update();
    }
};

// just test donot use
CommonExperiment.prototype.addTestCube = function () {
    var geometry = new THREE.CubeGeometry(200, 200, 200);
    var material = new THREE.MeshBasicMaterial({ color:0xff0000, wireframe:true });
    this.testMesh = new THREE.Mesh(geometry, material);
    this.scene.add(this.testMesh);
};

// to be overide
CommonExperiment.prototype.render = function () {
    this.testMesh.rotation.x += 0.01;
    this.testMesh.rotation.y += 0.02;
};

有什么帮助吗?不胜感激:)。

4

1 回答 1

1

对不起,我忘了添加

this.renderer.render(this.scene,this.camera);

在渲染循环结束时。

谢谢 :) 。

于 2012-12-09T13:32:45.283 回答