Okee, waarschijnlijk ben ik ergens ongelooflijk overheen aan het kijken, maar ik zit dus met dit probleem:

Waar je naar kijkt is een fotoshopje van een 3ds max rendering en een isometrisch spelletje in Flash.
Wat ik probeer is om de hoek van de max rendering, precies overeen te laten komen met die van de as3isolibrary van flash. Daar ben ik nu redelijk in geslaagd, maar dit is proefondervindelijk gedaan (ik heb doezend renders gemaakt totdat hij 'pastte').
Ik kom daar niet mee weg als ik hele grote levels ga bouwen dus ik moet weten wat de formule is om het uit te rekenen!
Hier zie je mijn scene in max:

links wat doorsnedes en rechts een 'gewone camera' (boven) en een isometrische camera onder. De 'gewone' camera is geselecteerd. Welnu, de isometrische camera staat op een hoek van x=70.4, y=0 en z = 45 graden, en uiteraard op een "ornitografische" projectie.
Het *lijkt* te werken en te passen, maarr...
waarom 70.4 graden? Dat getal heb ik dus gevonden door te klooien, maar ik krijg het niet geproduceerd in de isometrische engine die ik gebruik. Dat is onhandig, want als ik de levels groter ga maken gaat hij zeker van de lijnen "af" lopen, en dan moet ik nog meer testen om de hoek nauwkeuriger te maken.
In Flash gebruik ik http://code.google.com/p/as3isolib/, maar ik wijzig de settings een beetje; ik 'tilt' namelijk de camerahoek middels een class die 'DefaultIsometricTransformation' heet. In plaats van een ratio van 2, gebruik ik een ratio van 3; en voor de correctie van de z gebruik ik 0.6 ipv. 0.5 want het perspectief komt een beetje omhoog.
DefaultIsometricTransformation
In flash ziet dat er zo uit:

Een isometrisch grid maar met een verhouding van 1:3 in plaats van het veel gebruikelijkere 1:2.
Wat ik nou moet weten is wat is de hoek van a in dit diagram:

en hoe verhoudt die zich tot de camera hoek in Max?!
De camera in max staat op 60 graden, (90-30) en zou dus bij een kleinere ratio op een andere hoek moeten staan. Die hoek ligt in de buurt van 70.6 graden, maar waarom?! [ ref. ]
in een projectie van 1:2 verhoudt de camera van Max zich exact op x:60, y:0, z:45 en dan past alles exact in elkaar; maar als ik de verhouding verander naar 1:3 in de isolibrary moet de x ongeveer 70.6 worden. Maar waarom?!
Ik zit nu al twee uur sommetjes met een Pythagoras en een tangens te maken, maar ik kom op allemaal bizarre getallen uit en niet op iets wat lijkt op 70.4 ~70.6 maar ik kom er niet op.
Wie heeft er wiskunde B in zijn pakket gehad en kan me de formule geven

Waar je naar kijkt is een fotoshopje van een 3ds max rendering en een isometrisch spelletje in Flash.
Wat ik probeer is om de hoek van de max rendering, precies overeen te laten komen met die van de as3isolibrary van flash. Daar ben ik nu redelijk in geslaagd, maar dit is proefondervindelijk gedaan (ik heb doezend renders gemaakt totdat hij 'pastte').
Ik kom daar niet mee weg als ik hele grote levels ga bouwen dus ik moet weten wat de formule is om het uit te rekenen!
Hier zie je mijn scene in max:

links wat doorsnedes en rechts een 'gewone camera' (boven) en een isometrische camera onder. De 'gewone' camera is geselecteerd. Welnu, de isometrische camera staat op een hoek van x=70.4, y=0 en z = 45 graden, en uiteraard op een "ornitografische" projectie.
Het *lijkt* te werken en te passen, maarr...
waarom 70.4 graden? Dat getal heb ik dus gevonden door te klooien, maar ik krijg het niet geproduceerd in de isometrische engine die ik gebruik. Dat is onhandig, want als ik de levels groter ga maken gaat hij zeker van de lijnen "af" lopen, en dan moet ik nog meer testen om de hoek nauwkeuriger te maken.
In Flash gebruik ik http://code.google.com/p/as3isolib/, maar ik wijzig de settings een beetje; ik 'tilt' namelijk de camerahoek middels een class die 'DefaultIsometricTransformation' heet. In plaats van een ratio van 2, gebruik ik een ratio van 3; en voor de correctie van de z gebruik ik 0.6 ipv. 0.5 want het perspectief komt een beetje omhoog.
DefaultIsometricTransformation
code:
1
2
3
4
5
6
7
| private var radians:Number; private var ratio:Number = 3; // 3 ipv. 2 private var bAxonometricAxesProjection:Boolean; private var bMaintainZAxisRatio:Boolean; private var axialProjection:Number = Math.cos(Math.atan(0.6)); // 0.6 ipv. 0.5 |
In flash ziet dat er zo uit:

Een isometrisch grid maar met een verhouding van 1:3 in plaats van het veel gebruikelijkere 1:2.
Wat ik nou moet weten is wat is de hoek van a in dit diagram:

en hoe verhoudt die zich tot de camera hoek in Max?!
De camera in max staat op 60 graden, (90-30) en zou dus bij een kleinere ratio op een andere hoek moeten staan. Die hoek ligt in de buurt van 70.6 graden, maar waarom?! [ ref. ]
in een projectie van 1:2 verhoudt de camera van Max zich exact op x:60, y:0, z:45 en dan past alles exact in elkaar; maar als ik de verhouding verander naar 1:3 in de isolibrary moet de x ongeveer 70.6 worden. Maar waarom?!
Ik zit nu al twee uur sommetjes met een Pythagoras en een tangens te maken, maar ik kom op allemaal bizarre getallen uit en niet op iets wat lijkt op 70.4 ~70.6 maar ik kom er niet op.
Wie heeft er wiskunde B in zijn pakket gehad en kan me de formule geven

[ Voor 7% gewijzigd door XangadiX op 27-01-2012 22:20 ]
Stoer; Marduq