0

我正在尝试使用 physijs 开发一个项目。我遇到了这种类型的错误(来自 mozilla firefox 控制台):

  • NetworkError:无法在“js/libs/ammo.js”加载工作脚本

错误日志

我正在尝试修复它,但没有任何结果。这是我关于 physijs 设置的代码片段:

<script src="build/three.js"></script>
<script src="js/libs/physi.js"></script>
<script src="js/controls/OrbitControls.js"></script>
<script src="js/Detector.js"></script>

<script>

    'use strict';

    Physijs.scripts.worker = 'js/libs/physijs_worker.js';
    Physijs.scripts.ammo = 'js/libs/ammo.js';

所有 javascript 文件都在 js 目录中,除了 Three.js 构建文件(在构建目录中)。我不知道我的代码有什么问题,我只创建了灯光、地面(遵循 Physijs 规则的复合形状)和一个袋子(我想应用一个锥形扭曲约束,但由于之前的原因不起作用)。

我什至添加了用于初始化场景的代码(如果出现问题):

function createScene() {

            var container = document.getElementById( 'container' );

            //stats = new Stats();
            //container.appendChild( stats.dom );

            camera = new THREE.PerspectiveCamera( 60, window.innerWidth / window.innerHeight, 0.1, 1000 );
            camera.position.x = 0;
            camera.position.z = 17;
            camera.position.y = 12;

            //scene = new THREE.Scene();
            scene = new Physijs.Scene;
            scene.setGravity(new THREE.Vector3( 0, -10, 0 ));


            renderer = new THREE.WebGLRenderer();
            renderer.physicallyCorrectLights = true;
            //renderer.gammaInput = true;
            //renderer.gammaOutput = true;
            renderer.shadowMap.enabled = true;
            //renderer.shadowMapType = THREE.PCFSoftShadowMap;
            //renderer.toneMapping = THREE.ReinhardToneMapping;
            renderer.setPixelRatio( window.devicePixelRatio );
            renderer.setSize( window.innerWidth, window.innerHeight );
            container.appendChild( renderer.domElement );


            var controls = new THREE.OrbitControls( camera, renderer.domElement );
            controls.target.set( 0, 0, 0 );
            controls.noPan = true;  //disable panning of orbit control
            controls.noKeys = true; //disable arrow keys of orbit control
            controls.update();

            window.addEventListener( 'resize', onWindowResize, false );
            window.addEventListener( 'keydown', onKeyDown, false );
            window.addEventListener( 'keyup', onKeyUp, false );

        }

如何解决此问题并正确导入 Physi.js?

4

1 回答 1

0

解决了我使用了本地网络服务器(Three.js的参考)并改变了这个:

Physijs.scripts.worker = 'js/libs/physijs_worker.js';
Physijs.scripts.ammo = 'ammo.js';
于 2017-03-18T18:24:25.757 回答