SCALEENTITY Cube..... rückwärts, auslesen?
Übersicht BlitzBasic Blitz3D
TOONYBetreff: SCALEENTITY Cube..... rückwärts, auslesen? |
Mo, Mai 25, 2009 10:41 Antworten mit Zitat |
|
---|---|---|
Hi,
mit SCALEENTITY Cube, 2,2,2 gebe ich dem cube eine größe. Läßt sich die größe auch abfragen? z.B.: x = entityscalex(cube) |
||
Mr.HydeNewsposter |
Mo, Mai 25, 2009 11:09 Antworten mit Zitat |
|
---|---|---|
GetMatElement enthält auf jeden Fall die Informationen, die du benötigst | ||
BBP News RSS | Chaos Interactive | Watanien 2 Screens, Infos und Download | Watanien 2 Worklog | PuzzleMasters
http://abgeordnetenwatch.de - http://www.regierungs-beratung.de - Der Regierung auf die Finger schauen |
skey-z |
Mo, Mai 25, 2009 13:25 Antworten mit Zitat |
|
---|---|---|
Alternativ hat die "Blitz3d+" DLL einige Funktionen, die dir den Status zurück geben
Darunter auch GetEntityScaleX#/Y#/Z# |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
Darren |
Mo, Mai 25, 2009 17:56 Antworten mit Zitat |
|
---|---|---|
Mr.Hyde hat Folgendes geschrieben: GetMatElement enthält auf jeden Fall die Informationen, die du benötigst
ich glaub das stimmt nicht ganz. sobald das object rotiert ist, enthalten die diagonalen nämlich nichtmehr nur den skalierungsfaktor, sondern in den werten ist auch die rotation mit reingewurschtelt. also ohne profunde kenntnisse über matrizen und winkelfunktionen lässt sich da recht wenig machen. ich würde einfach beim scalieren den wert iwo abspeichern, damit du das einfach in einer variable stehen hast. ist auch schneller, als ewig mit funktionen rumzutun. |
||
MFG Darren |
Noobody |
Mo, Mai 25, 2009 18:04 Antworten mit Zitat |
|
---|---|---|
Naja, so schwierig ist das auch wieder nicht. Die oberen drei Zeilen der Matrix stellen die Achsenvektoren des lokalen Koordinatensystems des Objekts dar - es reicht also, die Länge des Achsenvektors zu messen und man hat die Skalierung.
Der Code für die X - Achse sähe also so aus Code: [AUSKLAPPEN] Function EntityScaleX#( Entity )
VX# = GetMatElement( Entity, 0, 0 ) VY# = GetMatElement( Entity, 0, 1 ) VZ# = GetMatElement( Entity, 0, 2 ) Return Sqr( VX#*VX# + VY#*VY# + VZ#*VZ# ) End Function Die Funktionen für Y und Z sind analog - einfach beim zweiten Parameter von GetMatElement 1 bzw. 2 einsetzen. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
Darren |
Mo, Mai 25, 2009 18:45 Antworten mit Zitat |
|
---|---|---|
haste recht. hatte ich nicht bedacht, macht aber sinn =) wieder was gelernt. | ||
MFG Darren |
The_Nici |
Di, Mai 26, 2009 16:37 Antworten mit Zitat |
|
---|---|---|
MeshWidth meshHeight und MeshDepth sollten doch reichen? | ||
Noobody |
Di, Mai 26, 2009 16:38 Antworten mit Zitat |
|
---|---|---|
Das funktioniert nur, wenn man ScaleMesh verwendet, nicht aber bei ScaleEntity. | ||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
Nicdel |
Fr, Mai 29, 2009 14:43 Antworten mit Zitat |
|
---|---|---|
Alle Funktionen:
Code: [AUSKLAPPEN] Function EntityScaleX#(Entity) Vx# = GetMatElement(Entity, 0, 0) Vy# = GetMatElement(Entity, 0, 1) Vz# = GetMatElement(Entity, 0, 2) Scale# = Sqr(Vx#*Vx# + Vy#*Vy# + Vz#*Vz#) Return Scale# End Function Function EntityScaleY#(Entity) Vx# = GetMatElement(Entity, 1, 0) Vy# = GetMatElement(Entity, 1, 1) Vz# = GetMatElement(Entity, 1, 2) Scale# = Sqr(Vx#*Vx# + Vy#*Vy# + Vz#*Vz#) Return Scale# End Function Function EntityScaleZ#(Entity) Vx# = GetMatElement(Entity, 2, 0) Vy# = GetMatElement(Entity, 2, 1) Vz# = GetMatElement(Entity, 2, 2) Scale# = Sqr(Vx#*Vx# + Vy#*Vy# + Vz#*Vz#) Return Scale# End Function |
||
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7 |
Übersicht BlitzBasic Blitz3D
Powered by phpBB © 2001 - 2006, phpBB Group