PositionMesh

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

NightPhoenix

Betreff: PositionMesh

BeitragMo, Jan 07, 2008 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Benutze ich den Befehl PositionMesh verschwindet mein Objekt einfach, bei PositionEntity funktioniert alles tadellos.
Noch ne interessante Sache ist dass wenn ich dem zu positionierenden Objekt mit PositionMesh nur eine Koordinate übergebe (bsp. EntityX für das X) wird es auch positioniert, aber sobald eine zweite (EntityY) mit ins Spiel kommt ist das Objekt weg.

Code: [AUSKLAPPEN]
   Fix.FixBlatt = First Fixblatt
   
   Dim Ast(2400)
   For i=1 To 100
      Ast(i)=LoadMesh("Blatt.3ds")
      PositionMesh Ast(i),EntityX(Fix\fixer),EntityY(Fix\fixer),EntityZ(Fix\fixer)
      ;PositionEntity Ast(i),EntityX(Fix\fixer),EntityY(Fix\fixer),EntityZ(Fix\fixer)
      ScaleMesh Ast(i),2.5,2.5,2.5
   Next


weiß jemand was ich falsch gemacht haben könnte?
mfg.

Noobody

BeitragMo, Jan 07, 2008 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Soweit ich weiss, kannst du Mesh - Befehle nur benutzen, wenn du vorher nicht Entity - Befehle auf dieses Objekt verwendet hast (wie Positionentity, EntityX o.ä.).

Bei mehreren Parametern mit EntityWasauchimmer werden wohl diese vor dem ...Mesh - Befehl ausgeführt, was diesen wieder ungültig macht.
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

Markus2

BeitragDi, Jan 08, 2008 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Lade es einmal,scaliere es einmal,verstecke es,copiere es und
nimm dann keine Mesh Funk.

Mesh = Drahtgittermodell

Code: [AUSKLAPPEN]

Fix.FixBlatt = First Fixblatt
   
   Dim Ast(2400)
   Ast(0)=LoadMesh("Blatt.3ds")
   hideentity Ast(0)
   ScaleMesh Ast(0),2.5,2.5,2.5
   For i=1 To 100
      Ast(i)=copyentity(Ast(0))
      PositionEntity Ast(i),EntityX(Fix\fixer),EntityY(Fix\fixer),EntityZ(Fix\fixer)
      Scaleentity Ast(i),1,1,1
   Next


 

Dreamora

BeitragDi, Jan 08, 2008 14:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Und nutz die global Flag bei EntityX etc sonst könntest du in das problem laufen dass das objekt nen parent hat und schon hast du nimmer die wirkliche Objektposition
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

NightPhoenix

BeitragMi, Jan 09, 2008 16:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Tipps Smile
Es hat wirklich an den Entity Befehlen gekoppelt mit den Mesh Befehlen gelegen.
Wenn ich das Objekt ausschließlich als Mesh behandle ohne Entity Befehle geht alles klar.

Vorher habe ich auch noch mein zu erstellendes Mesh von einem Quellmesh kopiert (CopyEntity) und anschließend mit Mesh befehlen gearbeitet. Das Quellobjekt und das erstellte lösten sich anschließend in Luft auf.
Die Lösung war es doch mal mit "CopyMesh" zu probieren ^^
Das war der Fehler, deshalb würde Markus2's Code auch mit Mesh Befehlen nicht funktionieren, wegen seinem "CopyEntity" weil diese dann ebenso verschwinden.
Ich brauch die Mesh Befehle für Addmesh, EntityBefehle würden es da nicht bringen Smile


MfG. Wink


*edit*

Der neue Code wenn es jemanden interessiert:
Code: [AUSKLAPPEN]
CopyBlatt=LoadMesh("Blatt.3ds")
   EntityTexture CopyBlatt,Tex_Baum
   ScaleMesh CopyBlatt,2.5,2.5,2.5
   
   
   
      Fix.FixBlatt = First Fixblatt
      
      SeedRnd(0)
      Detail=240
      NextSteper=Int(Detail/12)
      
   Dim Ast(2400)
   For i=1 To Detail
      typzae=typzae+1
      Ast(i)=CopyMesh(CopyBlatt)
         EntityTexture ast(i),tex_baum
         ;PositionMesh Ast(i),EntityX(Fix\fixer)+Rnd(-3,3),EntityY(Fix\fixer)+Rnd(-2.2,2.2),EntityZ(Fix\fixer)+Rnd(-3,3)
         PositionEntity Ast(i),EntityX(Fix\fixer)+Rnd(-3,3),EntityY(Fix\fixer)+Rnd(-2,3),EntityZ(Fix\fixer)+Rnd(-3,3)
         EntityAutoFade ast(i),60,80
      If typzae=NextSteper Then
         typzae=0
         fix = After fix
      EndIf
   Next

   HideEntity CopyBlatt


Das Ganze wird jetzt auf SingleSurface umgeschrieben Wink
danke euch nochmal!

Markus2

BeitragMi, Jan 09, 2008 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
CopyEntity erstellt ja auch kein neues Mesh ,
ich glaube du hast den Sinn bei dem Befehl nicht verstanden .
Trotzdem kann man Scale Entity benutzen und auch Entity an andere dran hängen .

Was Du vor hast ist Quatsch und ich behaupte mal das Du nicht weist was zu tust Wink
???
Code: [AUSKLAPPEN]

  Ast(i)=CopyMesh(CopyBlatt)
  EntityTexture ast(i),tex_baum

NightPhoenix

BeitragMi, Jan 09, 2008 19:32
Antworten mit Zitat
Benutzer-Profile anzeigen
was ist daran so falsch? ^^
Wenn ich CopyMesh anwende wird die Textur nicht "übernommen"... so hätte ich das erwartet, aber nunja, deshalb entitytextur

oder was meinst du? ^^

Markus2

BeitragMi, Jan 09, 2008 23:35
Antworten mit Zitat
Benutzer-Profile anzeigen
falsch kann man dazu eigentlich nicht sagen

Du kopierst immer das gleiche Drahtgitter obwohl ein Verweis reichen würde
also 1 echtes Objekt wo xxxx drauf verweisen statt wie du xxxx Objekte doppelt im Speicher zu haben bzw. ein Riesen Drahtgitter Modell mit
immer den gleichen Elementen .
Da macht es auch kein Sinn das in Single Surface zu machen .

Als Vergleich:
Du schüttest Dir selber nen Berg vor die Füße und gräbst den mit deiner
eigenen Schaufel wieder weg wobei kein Berg = kein Hindernis = keine Arbeit wär .

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group