0
<html>
    <head>
        <title>My first Three.js app</title>
        <style>canvas { width: 100%; height: 100% }</style>
    </head>
    <body>
        <script src="https://raw.github.com/mrdoob/three.js/master/build/three.js"></script>
        <!--<script src="C:/Users/danr/Desktop/ThreeJS/three.js-master/build/three.js"></script>-->
        <script>
            var scene = new THREE.Scene();
            var camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);

            var renderer = new THREE.WebGLRenderer();
            renderer.setSize(window.innerWidth, window.innerHeight);
            document.body.appendChild(renderer.domElement);
            
            camera.position.z = 5;
            
            var pointLight = new THREE.PointLight(0xFFFFFF);
            pointLight.position.x = 2;
            pointLight.position.y = 5;
            pointLight.position.z = 10;
            scene.add(pointLight);
            
            loader = new THREE.JSONLoader();
            loader.load( "./X738.js", function(geometry) 
            {
                mesh = new THREE.Mesh(geometry, new THREE.MeshNormalMaterial());
                mesh.scale.set( 1, 1, 1 );
                mesh.position.y = 0;
                mesh.position.x = 0;
                scene.add(mesh);
            });
            
            function render() {
                requestAnimationFrame(render);


                renderer.render(scene, camera);
            }
            render();
        </script>
    </body>
</html>

这是我所有的代码。我正在使用 Apache2.2 服务器,我使用 python 将我的模型从 FBX 转换为 Json。这是我收到的错误消息:

THREE.WebGLRenderer 57 three.js:18058
Uncaught SyntaxError: Unexpected token , three.js:9764
xhr.onreadystatechange three.js:9764

     xhr.onreadystatechange = function () {
        
                if ( xhr.readyState === xhr.DONE ) {
        
                    if ( xhr.status === 200 || xhr.status === 0 ) {
        
                        if ( xhr.responseText ) {
        
                            var json = JSON.parse( xhr.responseText );//*Uncaught SyntaxError: Unexpected token*
                            var result = context.parse( json, texturePath );
                            callback( result.geometry, result.materials );

有什么建议可能是错的???我尝试了许多不同的解决方案,但似乎没有任何效果,我感到非常迷茫。

谢谢!!!

编辑:这是 python FBX 到 JSON 转换器给我的示例:

{
    "metadata": {
        "formatVersion" : 3.2,
        "type"      : "scene",
        "generatedBy"   : "convert-to-threejs.py",
        "objects"       : 1,
        "geometries"    : 1,
        "materials"     : 1,
        "textures"      : 1
    },


    "urlBaseType": "relativeToScene",

    "objects" :
    {
        "Tire_Front" : {
            "geometry" : "Geometry_40_Tire_Front",
            "material" : "Material #3319",
            "position" : [ 0, -423.113, 451.225 ],
            "rotation" : [ -1.5708, 0.000987928, 6.04932e-20 ],
            "scale"    : [ 1, 1, 1 ],
            "visible"  : true
        }
    },

    "geometries" :
    {
        "Geometry_40_Tire_Front" : {
            "type"  : "embedded",
            "id" : "Embed_40_Tire_Front"
        }
    },
4

1 回答 1

0

我在您的 .json 文件中发现了一些“Uncaught SyntaxError:Unexpected token”的来源。请注意语法,包括括号“{”或“[”。

{
    "metadata": {
        "formatVersion" : 3.2,
        "type"      : "scene",
        "generatedBy"   : "convert-to-threejs.py",
        "objects"       : 1,
        "geometries"    : 1,
        "materials"     : 1,
        "textures"      : 1
    },


    "urlBaseType": "relativeToScene",

    "objects" :
    {
        "Tire_Front" : {
            "geometry" : "Geometry_40_Tire_Front",
            "material" : "Material #3319",
            "position" : [ 0, -423.113, 451.225 ],
            "rotation" : [ -1.5708, 0.000987928, 6.04932e-20 ],
            "scale"    : [ 1, 1, 1 ],
            "visible"  : true
        }
    },

    "geometries" :
    {
        "Geometry_40_Tire_Front" : {
            "type"  : "embedded",
            "id" : "Embed_40_Tire_Front"
        }
    }

}

使用“OBJLoader”而不是“JSONLoader”来加载对象也有帮助。

于 2015-06-30T02:32:05.023 回答