Habe ein Problem mit dem Bäume setzten *Gelöst*
Übersicht

DarkbyteBetreff: Habe ein Problem mit dem Bäume setzten *Gelöst* |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi Leute,
habe wieder mal ein Problem. Habe mir mal in der Forensuche angeschaut, wie manche ihre Bäume setzten. und da bin ich auf das gestoßen: Zitat: Grundgerüst bei einem lod-terrain erstmal die 2D koordinaten von weißen punkten herausfinden: texturebuffer for x=.. for y=.. Wert=readpixel[fast](x,y) If Wert And $FFFFFF koordinaten wie folgt verwenden: Dreisatzt x3d=x*terrainsize(...)/texturewidth(...) z3d=y*terrainsize(...)/textureheight(...) y3d=terrainy(...,x3d,entityy(terrain),z3d) Mach_Baum_Dahin(x3d,y3d,z3d) endif next next basiert auf 3-Satz Ich hab nicht die skalierung,position und drehung berücksichtigt evtl musst du x3d und z3d vertauschen Link dazu: https://www.blitzforum.de/foru...t=colormap ich habe es Probiert: Code: [AUSKLAPPEN] tex = LoadTexture("BM.bmp") For x=1 To 128 For y=1 To 128 Wert=ReadPixel(x,y,TextureBuffer(tex)) If Wert And $FFFFFF Then x3d=x*TerrainSize(Terrain)/TextureWidth(tex) z3d=y*TerrainSize(Terrain)/TextureHeight(tex) y3d=TerrainY(Terrain,x3d,EntityY(Terrain),z3d) TextureFilter "",4 Baum = LoadMesh("Baum2.3ds") ScaleEntity Baum,10,10,10 EntityType Baum,2 MoveEntity Baum,x3d,y3d,z3d EndIf Next Next Aber es will nicht funktionieren. Die Textur ist auf der selben Größe wie das Terrainbild. beide 128*128. Der Baum wird aber immer an die eine Stelle gesetzt. und nicht dahin wo ich das möchte, nämlich genau in die Mitte. Ich habe eine Insel per Hightmap erstellt und dann es so ausgetüftelt, das der Weise Punkt genau in der Mitte ist (Habe 2 verschiedene Bilder). Was mache ich falsch? |
||
- Zuletzt bearbeitet von Darkbyte am Do, Mai 31, 2007 15:36, insgesamt einmal bearbeitet
Darkbyte |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Weiß denn keiner eine Antwort auf meine Frage? | ||
![]() |
StepTiger |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn jemand antworten will, dann macht er das. | ||
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer: AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t Gewinner: BP Code Compo #2 Π=3.141592653589793238...<--- und das aus dem kopf ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
Puccini |
![]() Antworten mit Zitat ![]() |
---|---|---|
was soll das hier??
Code: [AUSKLAPPEN] If Wert And $FFFFFF Then
Du willst quasi deinen baum genau an der stelle wo der weise punkt ist? Code: [AUSKLAPPEN] If Wert = $FFFFFF Then
oder nich? bei deiner variante dürfte der baum immer an der letzten position in deiner Map stehen! weil Wert und $FFFFFF immer true ist! versuch das mal! |
||
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM www.ragesoft.de Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
edit1: Sorry, habe mich vertan. ![]() |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Darkbyte |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Habe ich gemacht aber jetzt erscheint kein Baum mehr. | ||
![]() |
Puccini |
![]() Antworten mit Zitat ![]() |
---|---|---|
mach mal nich moveentity, sondern positionentity!
nur mal als test ^^ und gib einfach mal nen text aus wenn der baum theoretisch gesetzt wird! um zu testen ob die bedingung erfühlt wird! |
||
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM www.ragesoft.de Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
OK, böse Falle: So geht's
Code: [AUSKLAPPEN] If Wert And $FFFFFF = $FFFFFF Then
Hab's ausprobiert. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Puccini |
![]() Antworten mit Zitat ![]() |
---|---|---|
![]() versteh ich net^^ |
||
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM www.ragesoft.de Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39 |
Darkbyte |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
komisch bei mir will das immer noch nicht so
Code: [AUSKLAPPEN] tex = LoadTexture("BM.bmp") For x=1 To 128 For y=1 To 128 Wert=ReadPixel(x,y,TextureBuffer(tex)) If Wert And $FFFFFF = $FFFFFF Then x3d=x*TerrainSize(Terrain)/TextureWidth(tex) z3d=y*TerrainSize(Terrain)/TextureHeight(tex) y3d=TerrainY(Terrain,x3d,EntityY(Terrain),z3d) TextureFilter "",4 Baum = LoadMesh("Baum2.3ds") ScaleEntity Baum,10,10,10 EntityType Baum,2 MoveEntity Baum,x3d,y3d,z3d EndIf Next Next Was übersehe ichh bzw. mache ich falsch? schonmal danke für deine Antwort |
||
Schnuff |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
if wert > 0 then
das sollte es eig sein? |
||
Programmers dont die. They gosub without return... |
Darkbyte |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Mit Positionentity funktionierts leider auch nicht
und wenn ich das ganze über das Terrain ziehe? Also Das Bild BM? |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit folgendem habe ich es getestet.
Beim drücken von Space, sollte die letzte Position vom weißem Pixel angezeigt werden. Ausserdem dollten beide Schleifen von 0 bis 127 gehen. Code: [AUSKLAPPEN] Graphics3D 200,200,0,2
SetBuffer BackBuffer() camera=CreateCamera() PositionEntity camera,0,0,-1 tex=LoadTexture("p.bmp",1) While Not KeyHit(1) If KeyHit(57) For x=0 To 127 For y=0 To 127 Wert=ReadPixel(x,y,TextureBuffer(tex)) If Wert And $FFFFFF = $FFFFFF Then x3d=x;x*TerrainSize(Terrain)/TextureWidth(tex) z3d=y;y*TerrainSize(Terrain)/TextureHeight(tex) ; y3d=TerrainY(Terrain,x3d,EntityY(Terrain),z3d) ; TextureFilter "",4 Baum = LoadMesh("Baum2.3ds") ; ScaleEntity Baum,10,10,10 ; EntityType Baum,2 ; MoveEntity Baum,x3d,y3d,z3d EndIf Next Next End If RenderWorld Text 20,20,x3d Text 20,40,z3d Flip Wend End |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Darkbyte |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
In der Schleife? Verbraucht das nicht sehr viel Speicherplatzt? Da STand in dem Beitrag, von dem ich das ganze habe, das sollte vor der Schleife stehen. Aber ich Probiers mal aus | ||
Darkbyte |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wie groß ist deine Textur mit dem Weißen Punkt?
*Edit* Als wert kommt bei mir immer: 69 und 66 raus, Es muss aber viel mehr sein, weil, wo ich das so Plaziert habe, wahr es immer 500 oder 400 usw.Auch wenn ich die tex auf 128 Scalliere, funktioniert es nicht. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
1. Mein Code ist nur ein Test aus deinem bereits geposteten Code. Im Programm sollte natürlich dieser Teil ausserhalb der Mainloop stehen. Es ist nur ein Test und das ganze Programm beinhaltet nur diesen Test.
2. ScaleTexture, skalliert nur einen Wert, wonach die Grafikkarte dann entsprechend dine Textur bearbeiten und berechnen kann. Es wird nicht auf dem Speicher skalliert. So ist eine 128er Textur mit ScaleTexture auf 2, nicht 256^2 im Speicher vorhanden, sondern immernoch 128^2. Daher ist der Wert von 69x66 den du da bekommst auch richtig und muss dann mit dem gleichen Wert multipliziert werden, mit welchem auch dein Terrain skalliert wurde. 3. Eine Textur die 128x128 groß ist, geht von 0 bis 127 (nicht von 1 bis 128). |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
Darkbyte |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ok es klappt
Danke für deine Hilfe. (Fals ich mal ein 3D Spiel zusammenkriege, wirst du in den Credits erwähnt, als dank für deine Hilfe.) |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Puccini hat Folgendes geschrieben:![]() versteh ich net^^ Eine ql:And -Verknüpfung ist eine logische Verknüpfung der Binärwerte einer Zahl. Dabei gibt es mehrere logische operatoren: OR - True wenn: Das eine oder das andere oder beide XOR - True wenn: Das eine oder das andere aber nicht beide AND - True wenn: Das eine und das andere (NOT) - negativieren 0 OR 0 = 0 0 OR 1 = 1 1 OR 0 = 1 1 OR 1 = 1 (XOR entspricht dem umgangsprachlichen menschlichen gebrauch) 0 XOR 0 = 0 0 XOR 1 = 1 1 XOR 0 = 1 1 XOR 1 = 0 0 AND 0 = 0 0 AND 1 = 0 1 AND 0 = 0 1 AND 1 = 1 Da alle Werte im Coputer letztendlich in Binärform vorliegt, liegt es nahe, dass der Computer auch veruschen muss mit diesen zu rechnen. Und in der tat, kann man alle Rechenaufgaben, allein mit nur ein paar einfachen Operatoren lösen. Im Beispiel oben passiert folgendes: ReadPixel gibt den Farbcode zurück. Der Farbcode ist auf 32 Bits (ein Integerwert) aufgeteilt: 1. Byte = Alpha (hier unrelevant), 2. Byte = Rot, 3. Byte = Grün, 4. Byte = Blau. Um nun die letzten beiden Bytes aus dem Alphawerten zu befreien, nehmen wir eine AND-Operation mit FF hex (= 255 dec bzw. 11111111 bin) durch. Es ist also eine art Maske, die auf den Farbcode übergelegt wird, und nur die durch lässt, die erwünscht sind. Der Fehler nun war, den gefilterten Wert nochmal nach seinem Schwellwert zu überprüfen, nämlich FFFFFF hex, bzw 11111111'11111111'11111111 bin, was soviel wie weiß bedeutet, da alle Farben (Rot, Grün, Blau) auf maximum stehen. Erklärt? |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Puccini |
![]() Antworten mit Zitat ![]() |
---|---|---|
ich bin auch doof ^^
soweit hab ich net gedacht das es da um binäroperatoren gehen könnte ![]() da hätte ich das auch selber rausfinden können^^ ich hab da nen denkfehler drin gehabt! hab gedacht das is so gemeient " wenn wert und wert dann mach das"! ^^ also hätte das ja immer true ergeben ![]() aber das is ja wie mit den flipflops;) oki! danke für die denkhilfe |
||
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM www.ragesoft.de Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39 |
![]() |
CypressArt |
![]() Antworten mit Zitat ![]() |
---|---|---|
dann sollte theoretisch auch dies möglich sein:
Code: [AUSKLAPPEN] For x=0 To 511 For y=0 To 511 Wert=ReadPixel(x,y,TextureBuffer(tex)) If Wert And $FFFFFF = $FFFFFF Then tree=tpLoadtree(treename$, type_tree) x3d=x z3d=y ty#=TerrainY( start_land,x3d,0,z3d ) PositionEntity tree, x3d, ty, z3d RotateEntity tree, Rnd(-50,50),Rnd(-180,180),Rnd(-50,50) scale#=Rnd(1.8,4.0) tpScaleTree(tree, scale, scale, scale) cs=Rand(150,255) tptreecolor (tree, cs,cs,cs) EndIf Next Next ;Steine auslesen -> farbcode:#FF0000 For x=0 To 511 For y=0 To 511 Wert_stein=ReadPixel(x,y,TextureBuffer(tex)) If Wert_stein And $FF0000 = $FF0000 Then stein=LoadMesh ("3D Model\3ds\felsen\Fel5.3ds") x3d_stein=x;x*TerrainSize(Terrain)/TextureWidth(tex) z3d_stein=y ty_stein# =TerrainY( start_land,x3d_stein,0,z3d_stein ) PositionEntity stein, x3d_stein, ty_stein, z3d_stein RotateEntity stein, Rnd(-50,50),Rnd(-180,180),Rnd(-50,50) EndIf Next Next Und auf dem Bild sind weisse (Bäume) und blaue(Felsen) Punkte eingezeichnet. Trotzdem macht das Programm Steine und Bäume am selben Ort. |
||
(no comment) -> Google Search Bot!! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group