我用的是Three。js创建100个立方体的动画。对于每个立方体,我设置其几何体和材质,然后使用:scene将其添加到场景中。添加(多维数据集);我一直将立方体的位置存储在三个数组中:cube_x[99]cube_y[99]cube_z[99]
我不知道如何在修改渲染器时告诉它们的位置。当场景中只有一个立方体时,以下方法适用于一个立方体:
立方体位置。x=300;cube.position.y=000;
我试着把立方体做成一个数组来保存100个立方体的xyz位置。但是我好像不能调用scene . add(cube[I]);
scene.add(立方体)后如何更新100个立方体的位置;如何让three.js知道我正在尝试移动哪个立方体?
谢谢- javascript初学者
基本上,您将在数组中存储对每个多维数据集的引用:
// reference array
var cubes = [];
// create cube mesh
var cube = new THREE.Mesh(new THREE.BoxGeometry(), someMaterial);
// push a reference to array
cubes.push(cube);
// add same cube to scene
scene.add(cube);
现在,您可以迭代每个立方体并移动它:
cubes.forEach(function(cube) {
cube.position.z -= 0.1; // move for example in Z direction
});
您可以在动画循环中这样做。
// Setup a simple demo scene
var scene = new THREE.Scene();
var cam = new THREE.PerspectiveCamera(40, innerWidth / innerHeight, 0.1, maxDist);
var renderer = new THREE.WebGLRenderer({antialias:true});
renderer.setPixelRatio(devicePixelRatio);
renderer.setSize(innerWidth, innerHeight);
document.body.appendChild(renderer.domElement);
// STore our cubes somewhere, dist for random generation and clipping
var cubes = [], maxDist = 500, r = Math.random, materials = [];
for(var i = 0; i < 7; i++) materials.push(new THREE.MeshBasicMaterial({color: (r()*0xffffff)&0xffffff|0x999999}));
// Add and store some cubes
for(i = 0; i < 3000; i++) {
var cube = new THREE.Mesh(new THREE.BoxBufferGeometry(), materials[i % materials.length]);
cubes.push(cube); // store to our array
cube.position.set(r()*maxDist*2-maxDist, r()*maxDist*2-maxDist, r()*maxDist*2-maxDist); // random positions
}
scene.add(...cubes); //es6, add to scene
cam.position.z = maxDist;
// Animate cubes
function loop(time) {
for(i = 0, cube; i < cubes.length; i++) { // for each cube do:
cube = cubes[i];
cube.position.z -= 1; // move on Z in this demo
if (cube.position.z < -maxDist) cube.position.z = maxDist; // reset position for demo
}
cam.rotation.z = Math.sin(time*0.0003); // add some camera action
cam.rotation.y = Math.sin(time*0.0005)*0.3; // add some camera action
renderer.render(scene, cam); // render everything
requestAnimationFrame(loop)
};
requestAnimationFrame(loop)
body {margin:0:overflow:hidden}
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/88/three.min.js"></script>
我正在制作一个小的3D世界,现在我正在修理相机。 相机停留在世界中的固定位置,而世界可以用鼠标和键盘围绕它移动(模拟相机在世界中移动)。 以下是我的draw函数中的代码: 只要我站着不动,环顾四周,一切都很好。另一方面,当我移动时,奇怪的事情开始发生。 首先,相机的Y坐标会发生变化,但它应该固定在Y=8(这就是为什么我将场景转换为-8) 第二,当我试图在世界中移动时,向前按应该只沿着z轴移动,但你
我的程序有两个场景,,每个都有相应的控制器类。 我希望能够使用Stage的在我的秒控制器类上,在它使用Button的onAction事件和FXMLLoader加载到FirstController类之后。 这是我在秒控制器类上的代码片段: 基于我的第一个控制器类上的,其中的值是一个字符串。 然而,这会输出一个错误: 然后,在第一个控制器类加载第二个控制器类之后,如何在其上使用?
我有一个场景,有4个不同的API调用,它们总是保持不变。我试图创建一个并行的压力测试,我希望相同的场景首先运行,比如10%,然后是20%,30%······max用户的等等。 但我也需要设置是动态的,取决于脚本中的可配置变量这是造成问题的原因,我希望能够很容易地配置它运行例如10%,50%和100%。 这就是我到目前为止所做的(缩短了,并且onceuser和nothingFor从迭代于bla(I)
我是新来的阿科雷和斯内福。我在arSceneView中有一个arObject,我想在场景中隐藏它(几秒钟)。我不想从场景中分离()锚点,只需将其隐藏,然后在几秒钟后再次显示。 我已尝试更改的参数。sfa文件,但它不起作用 或者我还缺少什么别的方法
我基本上是Java FX 2的新手。 场景: 我有3个场景,我想要一种添加菜单栏的方法,这样我就不想显式地从以前的场景中删除菜单栏并将其添加到新的场景中。例如,父场景或菜单栏以某种方式附加到舞台。我的意思是菜单栏只添加了一次,无论前面有没有场景,它都会一直出现。 如果这是可能的,我该怎么做? 以下是 Oracle 文档提供的 JavaFX http://docs.oracle.com/javafx
在我的cucumber jvm项目中,我希望在不使用场景大纲的情况下,使用相同的数据集执行场景10次(数据在excel中提供)。 有人能指导我如何做到这一点吗?