0

嗨,我正在尝试让一个 sphree 渲染到屏幕上。这是我的 js 文件。

function Earth()
{
    this.getEarth = init();

function init()
{
    var map = {map:THREE.ImageUtils.loadTexture("images/earth_surface_2048.jpg")};
    var material = new THREE.MeshBasicMaterial(map);
    var geometry = new THREE.SphereGeometry(1,32,32);
    return new THREE.Mesh(geometry, material);
}

function update()
{
    getEarth.rotation.x += .01;
}
}

这是页面中包含的html文件threejs中的脚本。

    <script>

    var renderer = null;
    var scene = null;
    var camera = null;
    var mesh = null;
    var earth = null;

    $(document).ready(
            function() {
                var container = document.getElementById("container");
                renderer = new THREE.WebGLRenderer({ antialias: true } );
                renderer.setSize(container.offsetWidth,container.offsetHeight);
                container.appendChild(renderer.domElement)
                scene = new THREE.Scene();
                camera = new THREE.PerspectiveCamera( 45,
                        container.offsetWidth / container.offsetHeight, 1, 4000 );

                earth = new Earth();
                scene.add(camera);
                scene.add(earth.getEarth);
                renderer.render( scene, camera );
            }
    );


</script>

我没有从调试器中得到任何错误,所以有什么想法吗?

4

1 回答 1

1

earth.getEarth 可能为 null 或函数。我记得 scene.add() 默默地忽略了它不能接受的东西,比如未定义的值等等。

如何更改var getEarth = init();this.getEarth = init();以便您的类范围之外的代码将在您的地球对象中看到该变量。尽管我建议不要对包含对象的变量使用类似方法的名称。

于 2013-02-15T12:49:52.683 回答