findchild copy entityalpha fehler

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

biggicekey

Betreff: findchild copy entityalpha fehler

BeitragMo, Apr 21, 2008 19:15
Antworten mit Zitat
Benutzer-Profile anzeigen
hallo,
habe folgendes problem:
ich will 2 entitys zum "blinken" bekommen. das besondere an den entitys, es sind per findchild aus einem mit loadanimmesh geladenen 3d modell definierte entitys.
dabei ist das 2. entity auch noch lediglich eine copy des 1. entitys.
problem ist nun das entityalpha lediglich auf die copy richtig wirkt. das orginal ist entweder ganz da oder ganz weg.
hier mal ein screen der ausgangssituation.
ganz links das orginal per findchild gefundene entity. in der mitte eine erste copy. und rechts eine zweite um zu testen ob der effekt auf alle copys wirkt.
user posted image

hier zu sehen ist das resultat:
entityalpha wirkt nur auf die letzte copy richtig. beide anderen verschwinden einfach ganz. oder sind kurz ganz da. leider hab ichs immer nur geschafft einen screenshot zu machen wenn sie weg sind.
also sie blinken auch, doch sind sie ganz da oder ganz weg.
user posted image



hier der code dazu:
Code: [AUSKLAPPEN]

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

pl=LoadAnimMesh("testknight.b3d")
player=FindChild(pl,"Plane03")

camera = CreateCamera(player)
RotateEntity    camera,15,0,0
PositionEntity    camera,0,40,-100
CameraZoom camera,3
EntityParent camera,0

ScaleEntity player ,.225,.255,.255
TurnEntity player,0,90,0
MoveEntity player,35,0,35

gegner=CopyEntity(player)
EntityColor gegner,255,0,0
MoveEntity gegner,-15,0,-15

player2=CopyEntity(player)
EntityColor player2,0,255,0
MoveEntity player2,-30,0,-30

light = CreateLight()

frame=0

While Not KeyHit(1)

frame=frame+10

If KeyDown(57)
hit=1
Else
hit=0
EndIf

If hit=1
EntityAlpha player,(Cos(frame)+1)/2
EntityAlpha gegner,(Cos(frame)+1)/2
EntityAlpha player2,(Cos(frame)+1)/2
Else
EntityAlpha player,1
EntityAlpha gegner,1
EntityAlpha player2,1
EndIf


UpdateWorld()
RenderWorld

Flip
Wend
End

kann sich jemand dieses phänomen erklären?

kann das ganze umgehen, indem statt eine copy zu machen das entity 2 mal lade, allerdings frisst mir das zu viel code da noch eine menge extractanimsequences dazu kommen.
gruß
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller
Nothing more to register - you've cleaned us out![/size]
 

BIG BUG

BeitragMo, Apr 21, 2008 21:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Klingt sehr merkwürdig. Bitte bei sowas auch immer gleich die Media-Files mitposten.
Habe mir trotzdem mal die Mühe gemacht, das mit einem eigenen Modell nachzustellen, hat einwandfrei funktioniert. Vielleicht hat es mit einer Materialeinstellung in der B3D zu tun?
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

biggicekey

BeitragMo, Apr 21, 2008 22:21
Antworten mit Zitat
Benutzer-Profile anzeigen
http://www.file-upload.net/dow...t.rar.html
hatte ich schon extra hochgeladen und im chat auch den link geposted aber hier wohl vergessen. hier auf jeden fall mit media dateien.
vllt liegts ja auch an meinem rechner.
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller
Nothing more to register - you've cleaned us out![/size]

Mr.Keks

BeitragDi, Apr 22, 2008 11:00
Antworten mit Zitat
Benutzer-Profile anzeigen
copyentity mit animierten meshes ist immer schon ein krampf gewesen. hat bei mir auch auf meinem alten rechner stets zu grafikfehlern geführt. interessant bei deinem problem ist, dass der ausgangsplayer offenbar, während er transparent ist, an der position der letzten kopie gezeichnet wird. es sieht ganz so aus, dass der ausgangsplayer aus irgendeinem jux heraus die bones der letzten kopie nutzt... der fehler tritt nicht auf, wenn man copymesh verwendet - dann ist allerdings auch die animation futsch. wahrscheinlich müsstest du die alle einzeln laden oder mal mark nerven.
MrKeks.net

biggicekey

BeitragDi, Apr 22, 2008 17:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Mr.Keks hat Folgendes geschrieben:
interessant bei deinem problem ist, dass der ausgangsplayer offenbar, während er transparent ist, an der position der letzten kopie gezeichnet wird. es sieht ganz so aus, dass der ausgangsplayer aus irgendeinem jux heraus die bones der letzten kopie nutzt...


woran siehst du das der ausgangsplayer an anderer position ist? bei mir ist der ausgangsplayer einfach weg. nur die letzte copy ist da.
achja und die animationen funktionieren übrigens einwandfrei auch bei den copys.
alles mist.

@bigbug
und mit deinem mesh funktioniert alles? und mit meinem?
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller
Nothing more to register - you've cleaned us out![/size]

Mr.Keks

BeitragMi, Apr 23, 2008 9:55
Antworten mit Zitat
Benutzer-Profile anzeigen
daran, dass der grüne player2 etwas grauweißgrün wird, wenn man den ersten player transparent macht ^^
MrKeks.net

Xaymar

ehemals "Cgamer"

BeitragMi, Apr 23, 2008 15:18
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm es scheint als würden die Meshs tatsächlich die Bones des grünen nehmen, wie Mr.Keks beschrieben hat.
ändert man
Code: [AUSKLAPPEN]
   If hit=1
      EntityAlpha player,(Cos(frame)+1)/2
      EntityAlpha gegner,(Cos(frame)+1)/2
      EntityAlpha player2,(Cos(frame)+1)/2
   Else
      EntityAlpha player,1
      EntityAlpha gegner,1
      EntityAlpha player2,1
   EndIf

in
Code: [AUSKLAPPEN]
   If hit=1
      EntityAlpha player,(Cos(frame)+1)/2
;      EntityAlpha gegner,(Cos(frame)+1)/2
;      EntityAlpha player2,(Cos(frame)+1)/2
   Else
      EntityAlpha player,1
      EntityAlpha gegner,1
      EntityAlpha player2,1
   EndIf


sieht man das das Mesh "player" die position von "player2" einnimmt und "gegner" auch die postition von "player2" einnimmt. Halt genau das was Mr.Keks gesagt hat.

Du musst also die meshes mehrmals laden.
Code: [AUSKLAPPEN]

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

camera = CreateCamera(player)
   RotateEntity camera,15,0,0
   PositionEntity camera,0,40,-100
   CameraZoom camera,3
;   EntityParent camera,0

pl=LoadAnimMesh("testknight.b3d")
   player=FindChild(pl,"Plane03")
      ScaleEntity player ,.225,.255,.255
      TurnEntity player,0,90,0
      MoveEntity player,35,0,35

pl=LoadAnimMesh("testknight.b3d")
   gegner=FindChild(pl,"Plane03")
      ScaleEntity gegner ,.225,.255,.255
      EntityColor gegner,255,0,0
      TurnEntity gegner,0,90,0
      MoveEntity gegner,20,0,20

pl=LoadAnimMesh("testknight.b3d")
   player2=FindChild(pl,"Plane03")
      ScaleEntity player2 ,.225,.255,.255
      EntityColor player2,0,255,0
      TurnEntity player2,0,90,0
      MoveEntity player2,5,0,5

light = CreateLight()

frame=0

While Not KeyHit(1)
   
   frame=frame + 10
   
   If KeyDown(57)
      hit=1
   Else
      hit=0
   EndIf
   
   If hit=1
      EntityAlpha player,(Cos(frame)+1)/2
      EntityAlpha gegner,(Cos(frame)+1)/2
      EntityAlpha player2,(Cos(frame)+1)/2
   Else
      EntityAlpha player,1
      EntityAlpha gegner,1
      EntityAlpha player2,1
   EndIf
   UpdateWorld()
   RenderWorld
   
   Flip
Wend
End
Warbseite

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group