Auslesen von Oberflächen und Dreicken-Anzahl bei Camerapick?
Übersicht

SpechtBetreff: Auslesen von Oberflächen und Dreicken-Anzahl bei Camerapick? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,,
habe folgendes kleines Programm geschrieben. Hier wird an Hand von Gitterpunkten und Dreiecken ein Würfel erstellt. Danach per Camerapick ausgewählt. Wieso kann ich vom ausgewählten Objekt nicht die Surfaces auslesen? B3D sagt dann: "Entity does not exist." Aber bei CameraPick wird eine Nummer zurückgegeben... Code: [AUSKLAPPEN] brush=CreateBrush(0,255,0) mesh=CreateMesh() Dim surface(6) surface(1)=CreateSurface(mesh,brush) v0=AddVertex(surface(1),0,0,-1) v1=AddVertex(surface(1),0,1,-1) v2=AddVertex(surface(1),1,1,-1) v3=AddVertex(surface(1),1,0,-1) AddTriangle(surface(1),v0,v1,v3) AddTriangle(surface(1),v3,v1,v2) surface(2)=CreateSurface(mesh,brush) v0=AddVertex(surface(2),1,0,-1) v1=AddVertex(surface(2),1,1,-1) v2=AddVertex(surface(2),1,1,0) v3=AddVertex(surface(2),1,0,0) AddTriangle(surface(2),v0,v1,v3) AddTriangle(surface(2),v3,v1,v2) surface(3)=CreateSurface(mesh,brush) v0=AddVertex(surface(3),1,0,0) v1=AddVertex(surface(3),1,1,0) v2=AddVertex(surface(3),0,1,0) v3=AddVertex(surface(3),0,0,0) AddTriangle(surface(3),v0,v1,v3) AddTriangle(surface(3),v3,v1,v2) surface(4)=CreateSurface(mesh,brush) v0=AddVertex(surface(4),0,0,0) v1=AddVertex(surface(4),0,1,0) v2=AddVertex(surface(4),0,1,-1) v3=AddVertex(surface(4),0,0,-1) AddTriangle(surface(4),v0,v1,v3) AddTriangle(surface(4),v3,v1,v2) surface(5)=CreateSurface(mesh,brush) v0=AddVertex(surface(5),0,1,-1) v1=AddVertex(surface(5),0,1,0) v2=AddVertex(surface(5),1,1,0) v3=AddVertex(surface(5),1,1,-1) AddTriangle(surface(5),v0,v1,v3) AddTriangle(surface(5),v3,v1,v2) surface(6)=CreateSurface(mesh,brush) v0=AddVertex(surface(6),0,0,0) v1=AddVertex(surface(6),0,0,-1) v2=AddVertex(surface(6),1,0,-1) v3=AddVertex(surface(6),1,0,0) AddTriangle(surface(6),v0,v1,v3) AddTriangle(surface(6),v3,v1,v2) UpdateNormals mesh EntityPickMode mesh, 2 fntArial =LoadFont("Arial",24,False,False,False) SetFont fntArial Color 255,255,255 While Not KeyHit(1) RenderWorld ent = CameraPick(camera,MouseX(),MouseY()) Text 0,0,ent Text 20,0,CountSurfaces(ent) Flip Wend End |
||
HW |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du solltest auf jeden Fall eine Prüfung einbauen, ob die mit CameraPick zurückgegebene Zahl gleich 0 ist. Wenn ja, dann soll nichts weiter mit dieser Entity gemacht werden, d.h. dann sollen die beiden Textbefehle nicht ausgeführt werden.
Der Code sähe dann so aus (ohne den Anfang): Code: [AUSKLAPPEN] While Not KeyHit(1)
RenderWorld ent = CameraPick(camera,MouseX(),MouseY()) If ent<>0 Then Text 0,0,ent Text 20,0,CountSurfaces(ent) EndIf Flip Wend Ich habe es allerdings nicht getestet. |
||
Specht |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, das stimmt natürlich.
Aber das ist nicht mein Problem. Die Zahl ist nicht 0 sondern 93385994. Mein Problem liegt hier bei: Code: [AUSKLAPPEN] Text 20,0,CountSurfaces(ent)
Irgendwie wird "ent" nicht als Mesh angesehen bzw. erkannt. |
||
![]() |
TheProgrammer |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also bei mir funzt alles, nachdem ich eine Kamera eingefügt habe ![]() Code: [AUSKLAPPEN] Graphics3D 640,480,32,2 SetBuffer BackBuffer() camera = CreateCamera() PositionEntity camera,0,0,-10 brush=CreateBrush(0,255,0) mesh=CreateMesh() Dim surface(6) surface(1)=CreateSurface(mesh,brush) v0=AddVertex(surface(1),0,0,-1) v1=AddVertex(surface(1),0,1,-1) v2=AddVertex(surface(1),1,1,-1) v3=AddVertex(surface(1),1,0,-1) AddTriangle(surface(1),v0,v1,v3) AddTriangle(surface(1),v3,v1,v2) surface(2)=CreateSurface(mesh,brush) v0=AddVertex(surface(2),1,0,-1) v1=AddVertex(surface(2),1,1,-1) v2=AddVertex(surface(2),1,1,0) v3=AddVertex(surface(2),1,0,0) AddTriangle(surface(2),v0,v1,v3) AddTriangle(surface(2),v3,v1,v2) surface(3)=CreateSurface(mesh,brush) v0=AddVertex(surface(3),1,0,0) v1=AddVertex(surface(3),1,1,0) v2=AddVertex(surface(3),0,1,0) v3=AddVertex(surface(3),0,0,0) AddTriangle(surface(3),v0,v1,v3) AddTriangle(surface(3),v3,v1,v2) surface(4)=CreateSurface(mesh,brush) v0=AddVertex(surface(4),0,0,0) v1=AddVertex(surface(4),0,1,0) v2=AddVertex(surface(4),0,1,-1) v3=AddVertex(surface(4),0,0,-1) AddTriangle(surface(4),v0,v1,v3) AddTriangle(surface(4),v3,v1,v2) surface(5)=CreateSurface(mesh,brush) v0=AddVertex(surface(5),0,1,-1) v1=AddVertex(surface(5),0,1,0) v2=AddVertex(surface(5),1,1,0) v3=AddVertex(surface(5),1,1,-1) AddTriangle(surface(5),v0,v1,v3) AddTriangle(surface(5),v3,v1,v2) surface(6)=CreateSurface(mesh,brush) v0=AddVertex(surface(6),0,0,0) v1=AddVertex(surface(6),0,0,-1) v2=AddVertex(surface(6),1,0,-1) v3=AddVertex(surface(6),1,0,0) AddTriangle(surface(6),v0,v1,v3) AddTriangle(surface(6),v3,v1,v2) UpdateNormals mesh EntityPickMode mesh, 2 fntArial =LoadFont("Arial",24,False,False,False) SetFont fntArial Color 255,255,255 While Not KeyHit(1) RenderWorld ent = CameraPick(camera,MouseX(),MouseY()) If ent <> 0 Then Text 0,0,ent Text 0,20,CountSurfaces(ent) EndIf Flip Wend End |
||
aktuelles Projekt: The last day of human being |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group