gpt4 book ai didi

javascript - Three.js + Physi.js--无法获取重力启动

转载 作者:行者123 更新时间:2023-11-29 20:07:59 25 4
gpt4 key购买 nike

我一直在尝试以我自己的风格重写 Physi.js 示例之一,但我似乎无法让它真正使用重力。渲染循环不断触发,就像它应该的那样,但似乎没有任何变化。

我已经上传了我在这里的内容:http://kemp59f.info/up/down/index.htm

这是 Physi.js 示例:http://chandlerprall.github.com/Physijs/examples/body.html

这是我的代码:

var ground = {},
box = {},
boxes = [],
ground = {},
projector,
renderer,
scene,
light,
camera,
render,
gravity;

// Set things up for Physijs
Physijs.scripts.worker = 'physi.js_worker.js';
Physijs.scripts.ammo = 'ammo.js';

// Projector
projector = new THREE.Projector;

// Renderer
renderer = new THREE.WebGLRenderer({
antialias: true
});
renderer.setSize( 1000, 600 );
renderer.shadowMapEnabled = true;
renderer.shadowMapSoft = true;

// Scene
scene = new Physijs.Scene;

// Camera
camera = new THREE.PerspectiveCamera( 35, ( 1000 / 600 ), 1, 1000 );
camera.position.set( 60, 50, 60 );
camera.lookAt( scene.position );

scene.add( camera );

// Light
light = new THREE.DirectionalLight( 0xFFFFFF );
light.position.set( 20, 40, -15 );
light.target.position.copy( scene.position );
light.castShadow = true;
light.shadowCameraLeft = -60;
light.shadowCameraTop = -60;
light.shadowCameraRight = 60;
light.shadowCameraBottom = 60;
light.shadowCameraNear = 20;
light.shadowCameraFar = 200;
light.shadowBias = -0.0001;
light.shadowMapWidth = light.shadowMapHeight = 2048;
light.shadowDarkness = 0.7;

scene.add( light );

// Ground
ground.material = new THREE.MeshLambertMaterial({
color: 0xDDDDDD
});
ground.material = Physijs.createMaterial( ground.material, 0.8, 0.4 );
ground.geometry = new THREE.CubeGeometry( 100, 1, 100 );
ground.mesh = new Physijs.BoxMesh( ground.geometry, ground.material, 0 );
ground.mesh.receiveShadow = true;

scene.add( ground.mesh );

// Box
box.material = new THREE.MeshLambertMaterial({
color: 0x00FF00
});
box.material = Physijs.createMaterial( box.material, 0.4, 0.6 );
box.geometry = new THREE.CubeGeometry( 4, 4, 4 );

// Draw 10 boxes
for( var i = 0; i < 10; i++ ){

var pos = {},
rot = {};

pos.x = Math.random() * 50 - 25;
pos.y = 10 + Math.random() * 5;
pos.z = Math.random() * 50 - 25;
rot.x = Math.random() * Math.PI * 2;
rot.y = Math.random() * Math.PI * 2;
rot.z = Math.random() * Math.PI * 2;
box.mesh = new Physijs.BoxMesh( box.geometry, box.material );
box.mesh.position.set( pos.x, pos.y, pos.z );
box.mesh.rotation.set( rot.x, rot.y, rot.z );
box.mesh.castShadow = true;

scene.add( box.mesh );
boxes.push( box.mesh );

};

// Render method
render = function(){

scene.simulate( null, 50 );
renderer.render( scene, camera );
requestAnimationFrame( render );

};

// Render this shit
$( function(){

$('#viewport').append( renderer.domElement );

render();

});

最佳答案

您的“physi.js_worker.js”版本似乎是空的。这意味着 Web Worker 正在启动,但永远不会响应脚本。

关于javascript - Three.js + Physi.js--无法获取重力启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11315267/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com