Bones werden nach copyentity gelöscht[Erledigt]

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Dottakopf

Betreff: Bones werden nach copyentity gelöscht[Erledigt]

BeitragSo, Nov 21, 2010 21:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo blitzer !

~EDIT~ SIEHE LETZTER POST


ich möchte einen bone in meinem Mesh finden und daran eine waffe hängen.
Das model wurde in Milkshape erstellt.


aber irgendwie meint er immer das das Entity welches mir das child zurückliefert nicht existiert.

code:
Code: [AUSKLAPPEN]


Msh_Player1 = LoadAnimMesh("entitys\robofinal.b3d")
      ScaleMesh Msh_Player1, 0.5, 0.5, 0.5
      HideEntity Msh_Player1

.
.
.
.

;Spieler joinen in die partie also orginal model kopieren und "zeigen"

PlayerModel( UDP_EventData ) = CopyMesh(Msh_Player1);Player Mesh
showentity PlayerModel (UDP_EventData)
.
.

bone = FindChild(PlayerModel( UDP_EventData ),"handrechts")
c =CreateCube(bone)
debug_wert = EntityX(bone)




bone existiert nicht. Also kann er den joint nicht finden ? Die bezeichnung ist aber korrekt.
Hab ich was vergessen ?


Gruß
Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!
  • Zuletzt bearbeitet von Dottakopf am Mi, Nov 24, 2010 23:53, insgesamt 3-mal bearbeitet

Dottakopf

BeitragDi, Nov 23, 2010 21:10
Antworten mit Zitat
Benutzer-Profile anzeigen
push..


sorry leute ich seh einfach meinen fehler nicht und komm nicht weiter.
Wie gesagt ich möchte nur den Joint (welcher mit Milkshape erstellt wurde) auslesen.

Habe jetzt mal ein Beispielaufbau mit dem besagten mesh und nur den dazu benötigten code zusammengestellt.

hier lauffähig, allerdings bekomm ich keine position vom bone/joint

alle sourcen (auch die .ms3d) liegen vor
-delete-


wer sich erst den code ansehen will
Code: [AUSKLAPPEN]


Graphics3D 800,600,16,2
SetBuffer BackBuffer()


Global cam,mesh,bone





cam = CreateCamera()
     MoveEntity cam,0,0,-80



mesh = LoadAnimMesh("entity/robofinal.b3d")
      RotateEntity mesh,0,180,0
       ScaleEntity mesh,0.5,0.5,0.5
      MoveEntity mesh,10,0,0
      
         bone = FindChild(mesh,"body")
   





Repeat
Cls

      wert= EntityX(bone)


      PointEntity cam,mesh
      TurnEntity mesh,0,1,0


UpdateWorld
RenderWorld

Text 0,0, "mesh x " + EntityX(mesh)
Text 0,10,"bone x " + wert

Flip
Until KeyHit(1)
;~IDEal Editor Parameters:
;~C#Blitz3D




Könnt ihr mir bitte helfen? oder zeigen wie es klappt ?


Gruß
Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!
  • Zuletzt bearbeitet von Dottakopf am Mi, Nov 24, 2010 23:54, insgesamt einmal bearbeitet

ToeB

BeitragDi, Nov 23, 2010 21:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Warum ? Ich bekommen eine X (0), Y (13) und eine Z (0) Koordinate deines "Bones" ! Was genau ist dein Problem ?

Edit : Hast du den Robot selbst gemacht ? Sieht nämlich ziemlich nice aus Very Happy


mfg ToeB
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

Dottakopf

BeitragMi, Nov 24, 2010 8:46
Antworten mit Zitat
Benutzer-Profile anzeigen
ja der Robo ist meins, aber eher weniger nice. Laughing
Passt aber zu einem Fun Shooter.

Hm du hast recht der Bone hat einen Y Wert!... nur warum ist x 0... das mesh wurde doch im raum bereits mit Moveentity umd 10 verschoben. Somit müsste doch der X wert auch höher sein.

Oder ist das relativ vom Spieler aus gesehen ?
Ich tüftel da daheim nochmal rum und schau wo es ganz genau bei mir hackt.

Gruß
Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!
 

mDave

BeitragMi, Nov 24, 2010 13:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Tagchen Dotti,

so klappt es bei mir:
BlitzBasic: [AUSKLAPPEN]


Graphics3D 800,600,16,2
SetBuffer BackBuffer()
Local timer=CreateTimer(58)

Global cam,mesh,bone

cam = CreateCamera()
MoveEntity cam,0,0,-80

mesh = LoadAnimMesh("entity/robofinal.b3d")
RotateEntity mesh,0,180,0
ScaleEntity mesh,0.5,0.5,0.5
MoveEntity mesh,10,0,0
bone = FindChild(mesh,"body")

Repeat
Cls

PointEntity cam,mesh
TurnEntity mesh,0,1,0
UpdateWorld
RenderWorld

Text 0,0, "mesh x " + EntityX(mesh)
Text 0,10,"bone x " + EntityX(bone,1)

Text 0,30, "mesh y " + EntityY(mesh)
Text 0,40,"bone y " + EntityY(bone,1)

Text 0,60, "mesh z " + EntityZ(mesh)
Text 0,70,"bone z " + EntityZ(bone,1)
WaitTimer timer
Flip 0
Until KeyHit(1)


Wie Du sicherlich schon bemerkt hast, habe ich EntityX(bone) durch EntityX(bone,1) ersetzt. An den Werten kann man dann auch ablesen, dass sich das Modell verschoben hat, genau so, wie Du es möchtest Smile

Außerdem hattest Du die X-Koordinate des Bones in einem Integer zwischengespeichert. Die X-Koordinate des Bones hat sich geändert, allerdings so nur so gering, dass sie immer wieder auf 0 gerundet worden ist.

lg

Dottakopf

BeitragMi, Nov 24, 2010 13:53
Antworten mit Zitat
Benutzer-Profile anzeigen
danke mdave,

das ich den parameter global mit angeben muss habe ich mir schon gedacht.
Scheinbar ist es ja doch alles ganz einfach, nur warum wollte es in meinem eigentlichen Projekt nicht klappen? warscheinlich nur irgendein leichtsinnsfehler, oder er mag copymesh nicht so richtig. Muss ich probieren.


Danke an alle !

Gruß
Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

Dottakopf

BeitragMi, Nov 24, 2010 21:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich werde gleich wahnsinnig !


irgendwie wenn ich versuche in der schleife die bones einzulesen existieren diese nicht mehr. Was ist denn jetzt kaputt ?

Vor der Schleife werden die Bones/joints noch erkannt!

hab hier nochmal den kleinen Testaufbau mit sourcen hochgeladen
-delete-




0 childs gefunden
kein bone gefunden...


und hier der Code:
Code: [AUSKLAPPEN]


Graphics3D 800,600,16,2
SetBuffer BackBuffer()
Local timer=CreateTimer(58)

Global cam,mesh,bone


Dim player(8)



cam = CreateCamera()
MoveEntity cam,0,0,-150


mesh = LoadAnimMesh("entity/robofinal.b3d")
RotateEntity mesh,0,180,0
ScaleEntity mesh,0.5,0.5,0.5
MoveEntity mesh,10,0,0


testbone = FindChild(mesh,"body")
DebugLog "testbone vor schleife ist vorhanden --->" +testbone
DebugLog "----------------------"
DebugLog "schleife"
DebugLog "----------------------"
DebugLog ""





Repeat
Cls



      If KeyHit(57) Then;leertaste
      
      
      
            player(1) = CopyMesh(mesh)
            
            count = CountChildren(player(1))
            bone= FindChild(player(1),"body")
            
            
            DebugLog "count" +count
            DebugLog "bone"  +bone
            DebugLog "PosX"  +x
            
            
            x = EntityX(bone,1)
            
            
            
            

      End If
      
               




UpdateWorld
RenderWorld

Text 0,0,"drücken sie die leer taste, debugger an !"


WaitTimer timer
Flip 0

Until KeyHit(1)
;~IDEal Editor Parameters:
;~C#Blitz3D



was zum geier ? Wie löse ich das Problem bin ratlos.


Gruß
Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!
  • Zuletzt bearbeitet von Dottakopf am Mi, Nov 24, 2010 23:53, insgesamt einmal bearbeitet

grafe

Betreff: CopyEntity

BeitragMi, Nov 24, 2010 21:57
Antworten mit Zitat
Benutzer-Profile anzeigen
probiers mal mit CopyEntity Wink

BlitzBasic: [AUSKLAPPEN]

Graphics3D 800,600,16,2
SetBuffer BackBuffer()
Local timer=CreateTimer(58)

Global cam,mesh,bone


Dim player(8)



cam = CreateCamera()
MoveEntity cam,0,0,-150


mesh = LoadAnimMesh("entity/robofinal.b3d")
RotateEntity mesh,0,180,0
ScaleEntity mesh,0.5,0.5,0.5
MoveEntity mesh,10,0,0


testbone = FindChild(mesh,"body")
DebugLog "testbone vor schleife ist vorhanden --->" +testbone
DebugLog "----------------------"
DebugLog "schleife"
DebugLog "----------------------"
DebugLog ""





Repeat
Cls



If KeyHit(57) Then;leertaste



player(1) = CopyEntity(mesh) ;<---------------- Anstatt CopyMesh

count = CountChildren(player(1))
bone= FindChild(player(1),"body")


DebugLog "count" +count
DebugLog "bone" +bone
DebugLog "PosX" +x


x = EntityX(bone,1)





End If






UpdateWorld
RenderWorld

Text 0,0,"drücken sie die leer taste, debugger an !"


WaitTimer timer
Flip 0

Until KeyHit(1)


mfg grafe

Dottakopf

BeitragMi, Nov 24, 2010 22:06
Antworten mit Zitat
Benutzer-Profile anzeigen
boa... darf ich dich knutschen? *hüstel* also nein... nur ein witz..

hatte grad schon pippi in den augen vor aggresion, und dann wars nur so ein kleiner fehler.
In gedanken ist ein entity und mesh genau das gleiche, bin halt ein 3D noob.

Danke !

Gruß
Dottakopf
Rechtschreibfehler gelten der allgemeinen Belustigung!

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group