私はあらゆるところでこれを解決するために探しています。 OrbitControlsとTrackballControllsでは、カメラが水平に留まらないようです! TrackballControllsで移動すると、シーンが回転し始めます。 OrbitControllsを左から右にドラッグするとシーンが回転します。 TrackballControlsを使用することができますが、シーンの中心を移動するときにカメラの水平線を水平に保ちたいと思います。これは可能ですか?3つのJSレベルの地平線カメラ
マイコード:
// SETUP GLOBAL VARIABLES
var camera, controls, scene, renderer;
// PLANET PHYSICAL LOCATIONS
var sun, mercPL, venPL, earthPL, marsPL, jupPL, satPL, urPL, nepPL;
// TIME, AND SCALARS
var now, scalar, planetScalar;
init();
animate();
function init() {
scene = new THREE.Scene();
renderer = new THREE.WebGLRenderer();
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth, window.innerHeight);
var container = document.getElementById('container');
container.appendChild(renderer.domElement);
camera = new THREE.PerspectiveCamera(60, window.innerWidth/window.innerHeight, 1, 100000);
camera.position.z = 200;
controls = new THREE.OrbitControls(camera, renderer.domElement);
//controls.addEventListener('change', render); // add this only if there is no animation loop (requestAnimationFrame)
controls.enableDamping = true;
controls.dampingFactor = 0.8;
controls.enableZoom = true;
// ADD THE SUN PHYSICAL LOCATION
var geometry = new THREE.SphereGeometry(5, 30, 30, 0, Math.PI * 2, 0, Math.PI * 2);
var material = new THREE.MeshBasicMaterial({color: "Yellow"});
sun = new THREE.Mesh(geometry, material);
scene.add(sun);
var segmentCount = 32,
radius = 80,
geometry = new THREE.Geometry(),
material = new THREE.LineBasicMaterial({ color: 0xFFFFFF });
for (var i = 0; i <= segmentCount; i++) {
var theta = (i/segmentCount) * Math.PI * 2;
geometry.vertices.push(
new THREE.Vector3(
Math.cos(theta) * radius,
Math.sin(theta) * radius,
0));
}
scene.add(new THREE.Line(geometry, material));
var segmentCount2 = 32,
radius2 = 120,
geometry2 = new THREE.Geometry(),
material2 = new THREE.LineBasicMaterial({ color: 0xFFFFFF });
for (var i = 0; i <= segmentCount2; i++) {
var theta = (i/segmentCount2) * Math.PI * 2;
geometry2.vertices.push(
new THREE.Vector3(
Math.cos(theta) * radius2,
Math.sin(theta) * radius2,
0));
}
scene.add(new THREE.Line(geometry2, material2));
//
window.addEventListener('resize', onWindowResize, false);
//
render();
}
function onWindowResize() {
camera.aspect = window.innerWidth/window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
}
function animate() {
requestAnimationFrame(animate);
controls.update();
render(); // MUST BE HERE FOR ANIMATION
}
function render() {
renderer.render(scene, camera);
}
ありがとう!
それは私がやっていることではありません。私はこの種のやりとりを探しています:http://minorplanetcenter.com/db_search/show_orbit?utf8=&&number=&designation=2016+NP21&name=&epoch=2016-07-31.0&peri=171.3873438&m=349.42313&node=144.6257306&incl = 33.4926092&e = 0.154857744&a = 2.615223&commit =インタラクティブ+オービット+スケッチ – rankind
リンクが壊れていて、コピー/貼り付けするとページが壊れます。そのサイトを掘り下げて実際の例を見つけた後は、どのような相互作用があなたを参照しているのかは分かりません。スライダーコントロールを介したヨーの回転? @キノの答えはあなたが求めているものに合うようです。マウスのコントロールが反転されていることに触れていることに注意してください。マウスの右ボタンを使って軌道を描きます。 – msun
私は上記の私のコードを追加しました。私はそれをどのようにしたいと思っていますか?これらの行は、シーンを上下に動かすことができないように固定しているように見えますか?ありがとう:) – rankind