Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js 在Haxe中,如何加载从Blender导出的json模型?_Three.js_Haxe - Fatal编程技术网

Three.js 在Haxe中,如何加载从Blender导出的json模型?

Three.js 在Haxe中,如何加载从Blender导出的json模型?,three.js,haxe,Three.js,Haxe,我最近开始使用Haxe和Three.js。如何使用JSONLoader加载3D对象。我对哈克斯的处事方式还很陌生,还没有对整个外部世界的事情了如指掌 我利用这个库来简化事情: 三个.js类中的大多数都是在lib中抽象的,除了JSONLoader或任何加载程序。如何加载我在Haxe中从Blender导出的json模型?看,它应该会对您有所帮助。似乎我使用了错误的库:) 这是一个更好的抽象: 要加载三维模型,请按以下方式操作: package co.za.anber; import js.thr

我最近开始使用Haxe和Three.js。如何使用JSONLoader加载3D对象。我对哈克斯的处事方式还很陌生,还没有对整个外部世界的事情了如指掌

我利用这个库来简化事情:


三个.js类中的大多数都是在lib中抽象的,除了JSONLoader或任何加载程序。如何加载我在Haxe中从Blender导出的json模型?

看,它应该会对您有所帮助。

似乎我使用了错误的库:)

这是一个更好的抽象:

要加载三维模型,请按以下方式操作:

package co.za.anber;
import js.three.Three;
import js.Lib;

class Main 
{
    static private var scene:Scene;

    static function main() 
    {
        //Get the dimensions of the scene
        var w = Lib.window.innerWidth;
        var h = Lib.window.innerHeight;

        scene = new Scene();

        //add some light
        var pointLight = new PointLight(0xffffff, 1, 0);
        pointLight.position.set(10, 50, 130);
        scene.add(pointLight);
        //add a camera
        var camera = new PerspectiveCamera(70, w/h, 1, 1000);
        camera.position.z = 500;
        scene.add(camera);

        //setup renderer in the document
        var renderer = new WebGLRenderer(null);
        renderer.setSize(w, h);
        Lib.document.body.appendChild(renderer.domElement);


        //Load the Blender exported Mesh. 
        //This is where we load the Mesh and setup the onload handler. This was the part I wasn't so sure about.
        var loader:JSONLoader = new JSONLoader(true);
        //I don't like in-line functions. You need to make the returning function into a Dynamic type.
        var callbackModel:Dynamic  = function( geometry:Dynamic ){createScene(geometry); };
        loader.load("Suzanne.js", callbackModel);


        //Listen for mouse move. In-line function from somewhere else.
        var mouseX = 0, mouseY = 0;
        untyped Lib.document.addEventListener('mousemove', function(event){
            mouseX = (event.clientX - Lib.window.innerWidth/2);
            mouseY = (event.clientY - Lib.window.innerHeight/2);
        }, false);

        //Render the scene @60 frames per second. Inline function from somewhere else.
        var timer = new haxe.Timer(Math.round(1000/60));
        timer.run = function(){
            camera.position.x += (mouseX - camera.position.x) * 0.05;
            camera.position.y += (-mouseY - camera.position.y) * 0.05;
            camera.lookAt(scene.position);
            renderer.render(scene, camera);
        }
    }

    /**
     * Onload complete handler. Here we can add our Mesh.
     * @param   geometry
     */
    static function createScene( geometry:Dynamic):Void{
        var mesh:Mesh = new Mesh( geometry, new MeshLambertMaterial( { color: 0x00FF00 } ) );
        //We scale it up to be visible!
        mesh.scale.set( 150.15, 150.5, 150.5 );
        scene.add( mesh );
    }


}

希望这有助于他人。

感谢您的回复。我应该说得更清楚些。我已经使用该脚本将3D网格导出为json对象。这部分不是问题所在。我的问题是如何使用Haxe将该文件加载到Three.js中。您应该使用我发布的链接中提供的插件。为它编写一个简单的外部代码,它应该是5行代码。