Y-Koordinate kann nicht richtig ermittelt werden...
Übersicht

crazy_downBetreff: Y-Koordinate kann nicht richtig ermittelt werden... |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi, Ich lasse in einer Schleife 3D Objekte einlesen und will sie per Zufall setzen lassen.
Code: [AUSKLAPPEN] ;Zufallsseed setzen
SeedRnd MilliSecs() ;Platz für 20 Bäume schaffen Dim tree(20) ;Masterbaum einlesen Global mastertree=LoadAnimMesh("baum.3DS") Function trees() ;Schleife einleiten For count = 1 To 20 ;Baum vom Masterbaum kopieren tree(count)=CopyMesh(mastertree) ;X und Z Koordinaten per Zufall bestimmen x#=Rnd(50,max_terrain_xkoordinate) z#=Rnd(50,max_terrain_zkoordinate) ;Terrainhöhe der X/Z Koordinaten vom Terrain lesen y#=TerrainY#(terrain,x#,0,z#) ;Baum skalieren und an X/Z positionieren ScaleEntity tree(count),0.15,0.15,0.15 PositionEntity tree(count),x#,y#,z#;RndSeed() Next End Function dann rufe ich die Funktion in der Hauptschleife auf. Tue ich dies, ist der Baum außerhalb der Terrains genau an der ecke wo es beginnen soll auf einer Ebene die ich Erstellt habe. Mache ich die schleife allerdings nciht in der Funktion sondern direkt in der Hauptschleife, werden die Bäme gesetzt. Allerdings nicht richtig. Ergebniss soll sein: Das eine Kopie des Baumes erstellt wird vom Mastertree dann die Y Koordinate des Terrains ermittelt wird und zufällig eine Z und X koordinate. Damit soll der Baum auf meinem Hügeligem Terrain immer auf dem Boden bleiben. Die y-Koordinate wird nur einmal ermittel und zwar genau an der ecke. Die restlichen bäume werden mit dem selben Wert gesetzt. Wo liegt der Fehler mit dem Wertz und der Funktion? Danke schonmal greetz Ciryx. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Aus deinem Code kann ich jetzt spontan kein Fehler erkennen. Ich vermute mal, dass eventuell die Bäume plaziert werden, bevor Terrain Skalliert wurde. Kann das sein? Hast du auch überprüft, ob die Bäume ihren Koordinatenursprung auch unten beim Stamm/Wurzeln haben? | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
crazy_down |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich lasse meine Bäume erst nach dem Skalieren des Terrains setzen.
Wie ermittel ich den Koordinatenursprung des Objektes ? |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Üblich wird der Koordinatenursprung mit einem Punkt oder ähnlichem bei einem 3D-Editor angezeigt.
Alternativ kannst du probehalber ein Baum laden und ihn per RotateEntity baum,rnd(0,360),rnd(0,360),rnd(0,360) rotieren lassen. Wenn die Wurzel in der mitte bleibt ist alles klar. Wenn der Baum sich aber in etwa seinem Schwerpunkt dreht - Meshmittelpunkt - so ist es nicht ok, und man sollte dies ändern oder unter Einsatz im Blitz mit berücksichtigen. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
crazy_down |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Oh Man ich habe ewig gebraucht bis er mal Rotiert hat.
Also der Koordinatenurspruing liegt genau an der Wurzel also wo er liegen soll. Aber mir ist aufgefallen... Ich konnte keinen der Kopierten Bäume drehen nur den Mastertree. Also irgendwo muss ich da noch einen Fehler haben. Edit: Wenn ich den Mastertree verschiebe und nach der y Koordinate platzieren lasse, funktioniert es. |
||
coldie |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Versuch doch mal die Koordinaten nach der Berechnung nochmal durch TformPoint zu schicken.
also so Code: [AUSKLAPPEN] [...] ;Baum vom Masterbaum kopieren tree(count)=CopyMesh(mastertree) ;X und Z Koordinaten per Zufall bestimmen x#=Rnd(50,max_terrain_xkoordinate) z#=Rnd(50,max_terrain_zkoordinate) ;Terrainhöhe der X/Z Koordinaten vom Terrain lesen y#=TerrainY#(terrain,x#,0,z#) TformPoint x#,y#,z#,terrain,0 ;Baum skalieren und an X/Z positionieren ScaleEntity tree(count),0.15,0.15,0.15 PositionEntity tree(count),tformedx#(),tformedy#(),tformedz#(),1;RndSeed() |
||
crazy_down |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mhh funktioniert leider auch nicht.
Ich werde über das Wochenende noch weiter Probieren. Wenn es dann immer noch nicht geht, poste ich einfach mal den kompletten Code. |
||
Omenaton_2 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
versuch mal testweise ScaleEntity entweder wegzulassen, oder schon vor der Berechnungen gleich nach Laden des Objektes auszuführen. | ||
crazy_down |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Also ich komme absolut nicht weiter.
Ich habe den Original Baum jetzt Kopiert also den Mastertree, da setzt er ihn und dann wieder an eine neue Stelle da es in der Schleife ist. AAber er soll ja die Kopien setzen und da lassen. Ich habe den gesamten Code und hoffentlichn ![]() Wenn jemand Zeit und Lust hat zu Schauen... http://ciryxcode.ci.funpic.de/codes/Terrain/ |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hab mir mal dein Code angeschaut und fast selbst am zweifeln gewesen. Es funktioniert aber wenn man anstelle: Code: [AUSKLAPPEN] Global mastertree=LoadAnimMesh("baum.3DS")
dann doch lieber Code: [AUSKLAPPEN] Global mastertree=LoadMesh("baum.3DS")
nimmt... ![]() |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
crazy_down |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Dangöö ![]() Kann ich zwar keine Animierten Bäume nehmen, aber das ist auch nicht so wichtig. Wenigstens Funktioniert es jetzt so wie ich möchte ^^ |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Alternativ könntest du auch mit der LoadAnimMesh und CopyEntity kombination experimentieren. Sofern du die Geometrie nicht verändern willst auf den Klonen sollte das mindestens so gut gehen. (mindestens weil CopyEntity keine Klone der Geometrie macht was Geometriespeicher spart und ein wenig Performance bringt)
AnimMeshes kannst du leider nicht kopieren mit copymesh bzw. nicht einfach so, denn ein AnimMesh ist nicht ein einzelnes Objekt und das ist das einzige was CopyMesh kopiert. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
crazy_down |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hey Danke, dann kann ich den Baum wenigstens Animieren ^^
Ich habe unten die Koordinaten ausgegeben aber die werden nicht Aktualisiert, was ja auch klar ist da es nicht in der While drinne steht. Sobald ich es aber da rein schreibe wird der Text nicht vorm Fenster angeziegt. Was mache ich da falsch ? |
||
![]() |
Silver_Knee |
![]() Antworten mit Zitat ![]() |
---|---|---|
wo hast dus denn stehen? sowas gehört zwischen Renderworld und flip
Beispiel Code: [AUSKLAPPEN] RenderWorld
Code: [AUSKLAPPEN] Text mu,ha,"ha" flip Wend Text mu,ha,"ha"
flip RenderWorld Wend |
||
crazy_down |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Code: [AUSKLAPPEN] RenderWorld Text 0,0,"Test1" Text 0,20,"test" Text 0,20,"TerrainY: "+terra_y# Flip Der code ist komplett gepostet oben. Edit: wenn ich es mit LoadAnimMesch mache und dann CopyEntity, funktioniert die Kollision nicht mehr. |
||
Deforation |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo.
Ich hätte da auch noch einen Vorschlag. Ich würde mal Probieren, ob es geht wenn du die X und Z Koordinaten auch in einen Array einliest. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group