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

Übersicht BlitzBasic Blitz3D

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

Darkbyte

Betreff: Habe ein Problem mit dem Bäume setzten *Gelöst*

BeitragMi, Mai 30, 2007 11:38
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Mai 31, 2007 10:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Weiß denn keiner eine Antwort auf meine Frage?

StepTiger

BeitragDo, Mai 31, 2007 13:17
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

Puccini

BeitragDo, Mai 31, 2007 13:57
Antworten mit Zitat
Benutzer-Profile anzeigen
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

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Mai 31, 2007 14:02
Antworten mit Zitat
Benutzer-Profile anzeigen
edit1: Sorry, habe mich vertan. Embarassed
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Darkbyte

BeitragDo, Mai 31, 2007 14:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Habe ich gemacht aber jetzt erscheint kein Baum mehr.

Puccini

BeitragDo, Mai 31, 2007 14:33
Antworten mit Zitat
Benutzer-Profile anzeigen
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

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Mai 31, 2007 14:37
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Mai 31, 2007 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Shocked erklär mal was dort pasisert ^^

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

BeitragDo, Mai 31, 2007 14:45
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Mai 31, 2007 14:47
Antworten mit Zitat
Benutzer-Profile anzeigen
if wert > 0 then

das sollte es eig sein?
Programmers dont die. They gosub without return...
 

Darkbyte

BeitragDo, Mai 31, 2007 14:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit Positionentity funktionierts leider auch nicht

und wenn ich das ganze über das Terrain ziehe? Also Das Bild BM?

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Mai 31, 2007 15:08
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Mai 31, 2007 15:12
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Mai 31, 2007 15:16
Antworten mit Zitat
Benutzer-Profile anzeigen
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.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Mai 31, 2007 15:28
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Mai 31, 2007 15:35
Antworten mit Zitat
Benutzer-Profile anzeigen
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.)

hectic

Sieger des IS Talentwettbewerb 2006

BeitragDo, Mai 31, 2007 15:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Puccini hat Folgendes geschrieben:
Shocked erklär mal was dort pasisert ^^

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

BeitragFr, Jun 01, 2007 11:32
Antworten mit Zitat
Benutzer-Profile anzeigen
ich bin auch doof ^^

soweit hab ich net gedacht das es da um binäroperatoren gehen könnte Wink

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 Wink

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

BeitragDo, Okt 22, 2009 14:13
Antworten mit Zitat
Benutzer-Profile anzeigen
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!!

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group