Autor Zpráva
vojtak
Profil
Dobrý den,

tuší někdo jak v papervisionu obtacet kameru kolem objektů a ne rotovat objekty?

function sbChangeX(e:MySliderEvent):void
{
	var xDist:Number = e.scrollPercent * 360;
	cube.rotationX = xDist;
	lines.rotationX = xDist;
	_world.rotationX = xDist;
	renderer.renderScene(scene, camera, viewport);
}


na scene mam napriklad tyto 3 objekty...takto s nimi otacim kolem osy kazdeho z objektu....... chtěl bych ale, aby se hýbala kamera a objekty zůstaly na místě... je to mozne?

diky
Steve
Profil
samozřejmě, že to je možné... osobně většinou používám matematické řešení. pozici kamery lze skriptem nastavit a správnou rotaci můžeš buď spočítat a nebo snadněji kameře nastavit .lookAt(<nějaký referenční bod>). a jak se spočítá pozice kamery? to už je matematika střední školy - nápověda funkce Math.sin() a Math.cos() budeš používat velmi často :)
vojtak
Profil
a lookAt je nejaka metoda objektu camera3D??
var camera:Camera3D = new Camera3D();
camera.zoom = 10;
camera.focus = 100; 

jde mi o to, jak vubec říct kameře, aby se někam pohnula..
Steve
Profil
lookAt je metoda objektu CameraObject3D, ze kterého dědí Camera3D... tím zajistíš správnou rotaci kamery, aniž bys musel něco počítat.

Já osobně řeším pohyb matematicky (jak jsem napsal výše)... spočívá to v tom, že si pohyb kamery počítám sám tak, že v každém snímku vypočítám všechny 3 souřadnice té kamery v závislosti na něčem (čase, pozice myši, aktuální rychlosti pohybu... to už je víceméně jedno)

V každém snímku tedy počítám (skutečně počítám přes vzorce, které jsem si vymyslel a odvodil) vždy nové souřadnice.
Poznámka - Tohle řešení používám, protože chci. Netvrdím, že je nejrychlejší, netvrdím, že je nejlepší... prostě mi vyhovuje, tak jej používám.

Jde o to, že s kamerou jde hýbat úplně stejně jako s kterýmkoliv jiným objektem, protože jejím předkem je DisplayObject3D. To mimo jiné znamená, že kamera má své souřadnice x, y a z, které když měníš, tak se prostě pohybuje v prostoru.
vojtak
Profil
diky moc za rady.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0