Linepick bei mir nichts anderes als Rnd. Warum?
Übersicht

![]() |
DG_Betreff: Linepick bei mir nichts anderes als Rnd. Warum? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
ich hab mich an einer Funktion zum ermitteln einer Höhe eines Levelmeshes versucht. Nur leider liefert diese an der immer gleichen position unterschiedliche Werte. Hier der Code : Code: [AUSKLAPPEN] Function meshy#(mesh,x#,z#)
Local mesh_hoehe# = MeshHeight#(mesh) Local mesh_y# = EntityY#(mesh) ; EntityPickMode mesh,2 ; Local mesh2 = LinePick(x#,mesh_y#+mesh_hoehe#+5.0,z#,x#,mesh_y#-5.0,z#,mesh_hoehe#+11.0) Local y# = PickedY#() ; EntityPickMode mesh,0 ; Return y# End Function Diese Funktion soll die benötigte y Position zum positionieren eines Baumes/Busches/was so anfällt zurückliefern. Es sind keine anderen Objecte pickbar. Hierzu mal ein Bild, wie ich es mir vorgestellt habe : ![]() So weit so gut. Nur sieht es in der Realität etwas anders aus. Das Object steht zwar an der richtigen x und z position, nur steht es nach jedem start an einer anderen y position, obwohl ich nichts am code und den meshes ändere. Hierzu noch ein Bild : ![]() Hier noch der Code, der das Object setzt : Code: [AUSKLAPPEN] mmesh = CopyMesh(waldzeug)
mx# = Float#(23) mz# = Float#(22) my# = meshy#(terrain,mx#,mz#) myaw = Rand(0,360) PositionEntity mmesh,mx#,my#,mz# RotateEntity mmesh,0,myaw,0 wo liegt hier der Fehler? Ich steh grade ziemlich auf dem Schlauch ![]() Achso. am restlichem code und den meshes liegt es nicht. Der Code hat keinen weiteren Einfluss und die Meshes sind auch überprüft (doppelt und dreifach) edit : ich hab das Gefühl, ich verwende linepick falsch. Ich hab nämlich nocheinmal in der Hilfe nachgeschaut. Ich dachte die parameter 4,5 und 6 stehen für die koordinaten des 2ten punktes, laut hilfe aber der abstand(?). Erklärt aber nicht, warum sich die position immer ändert und warum LinePick(x#,mesh_y#+mesh_hoehe#+5.0,z#,0,-1*mesh_hoehe#-5.0,0,mesh_hoehe#+11.0) nicht funktioniert. Oder hab ich linepick total verpeilt? |
||
![]() |
DG_ |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
sorry für den Doppelpost, aber das Problem hat sich leider nicht gelöst. Hat denn keiner eine Lösung für mein Problem? Ich bin auch offen für komplett andere Lösungen um die Höhe einer bestimten Position herauszubekommen. Ich hab sogar schon versucht ne Sphere vom himmel fallen zu lassen und sobald sie kollidierte hab ich mit entityy() die höhe bekommen. Stellte sich leider nur als sehr ungenau herraus. Danke schonmal für die (hoffentlich kommenden) Antworten. |
||
DG_ = Der Gärtner |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also wenn du schon sagst, dass sich das ganze ziemlich zufällig verhält, würd ich mal die Zeile
Code: [AUSKLAPPEN] myaw = Rand(0,360)
auskommentieren... Ich bin mir nicht ganz sicher, ob das überhaupt sein kann, aber vielleicht wird dein Mesh nicht wirklich um den Punkt gedreht, um den es gedreht werden soll, oder um den du denkst, dass es sich drehen würde. Bist du dir sicher, dass die Funktion Zufallswerte zurückliefert oder könnte der Fehler eben auch ausserhalb liegen? |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
DG_ |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
danke für die Antwort ![]() Code: [AUSKLAPPEN] Graphics3D 1024,768
; Global boden = LoadanimMesh("landscape.b3d") Global boden_unterseite = CopyMesh(boden) FlipMesh boden_unterseite EntityColor boden,0,255,0 EntityColor boden_unterseite,0,255,0 ; Global camera = CreateCamera() Global campiv = CreatePivot(camera) PositionEntity camera,0,10,0 CameraClsColor camera,69,172,255 CameraRange camera,.1,10000 ; Global sphere = CreateSphere() ScaleEntity sphere,25,25,25 EntityColor sphere,255,0,0 PositionEntity sphere,10.0,meshy#(boden,10.0,11.0),11.0 ; SetBuffer BackBuffer() While Not ende If KeyHit(1) exit Cls ; UpdateWorld() RenderWorld() ; Color 0,0,0 Rect 49,49,350,16 Color 255,255,255 Text 50,50,"Camera x/y/z : "+entityx(camera)+"/"+entityy(camera)+"/"+entityz(camera) ; TurnEntity camera,MouseYSpeed(),-MouseXSpeed(),0 MoveMouse 1024/2,768/2 RotateEntity camera,EntityPitch(camera),EntityYaw(camera),0 MoveEntity camera,(KeyDown(205)-KeyDown(203))*5,0,(KeyDown(200)-KeyDown(208))*5 ; Flip Wend End Function meshy#(mesh,x#,z#) Local mesh_hoehe# = MeshHeight#(mesh) Local mesh_y# = EntityY#(mesh) ; EntityPickMode mesh,2 ; Local mesh2 = LinePick(x#,mesh_y#+mesh_hoehe#+5.0,z#,0,-1*mesh_hoehe#-5.0,0,mesh_hoehe#+11.0) Local y# = PickedY#() ; ;zum test, um die 2 messpunkte anzuzeigen punkt_a = CreateSphere() punkt_b = CreateSphere() EntityColor punkt_a,0,0,255 EntityColor punkt_b,0,0,255 ScaleEntity punkt_a,20,20,20 ScaleEntity punkt_b,20,20,20 PositionEntity punkt_a,x#,mesh_y#+mesh_hoehe#+5.0,z# PositionEntity punkt_b,0,-1*mesh_hoehe#-5.0,0 ; EntityPickMode mesh,0 ; DebugLog y#;returnwert dokumentieren Return y# End Function Das zugehörige terrain : http://www.kram-hochladen.de/d...d=MzAzMTM= Wie man sieht, landet die zu positionierende kugel unter dem Terrain. die Messpunkte scheinen allerdings richtig zu sitzen. Hab ich einfach den BLick für das offensichtliche verloren, oder hab ich einfach falsche Vorstellungen, wie das ganze funktionieren soll? *|EDIT|* Ich hab nun eine Lösung gefunden. Ich hab den letzten Parameter von Linepick dank nicht genauen Lesens der Onlinehilfe (ja, hab mich schon für geschämt ![]() LinePick(x#,mesh_y#+mesh_hoehe#+5.0,z#,0,-1*mesh_hoehe#-5.0,0,0) funktioniert alles wunderbar. MfG DerGärtner_ |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group