Wirefarme *gelöst*

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Fuchsi

Betreff: Wirefarme *gelöst*

BeitragFr, Okt 13, 2006 19:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin,

Gibt es eine Möglichkeit, das Drahtgittermodell (Wireframe) eines Meshes bzw. eines Entitys undurchsichtig zu machen?

MfG Fuchsi
  • Zuletzt bearbeitet von Fuchsi am Sa, Okt 14, 2006 20:36, insgesamt einmal bearbeitet
 

Dreamora

BeitragFr, Okt 13, 2006 19:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie meinst du das genau?
Wenn du in Wireframe gehst, dann erscheinen nur die Wires also das Drahtgitter. Etwas anderes soll da ja nicht erscheinen.

Wenn du mehr willst, musst du spezielle texturen nehmen oder mehrfach rendern und mit dem CameraClsMode spielen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Fuchsi

BeitragFr, Okt 13, 2006 19:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, werde mal nicht umhin kommen eine Textur zu verwenden.
Trotzdem Danke.

FreetimeCoder

BeitragFr, Okt 13, 2006 19:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Wofür brauchst du das denn?
Wenn du ein Mesh mit entityalpha durchsichtig machst, verschwindet auch das Drahtgitter.
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA

Fuchsi

BeitragFr, Okt 13, 2006 19:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn man die Wireframeansicht einschaltet, sieht man zwar das Drahtgitter
allerdings kann man dann durch alle Objekte hindurchsehen.
Allerdings hab ich es, auf Dreamores Rat hin, mit einer Textur gelöst.
 

Dreamora

BeitragFr, Okt 13, 2006 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
In dem Falle wo du das nicht willst mit dem Durchsehen wäre wie gesagt auch ein "Multi Pass" render möglich, bei dem du erst ohne WireFrame renderst und danach den CameraCLSMode umstellst auf false,true (also depth buffer löschen, colorbuffer net) und dann mit wireframe true nochmal renderst. Bin mir jetzt nicht ganz sicher das die flags so stimmen aber prinzipiell müsste das eigentlich das drahtgitter über deine texturierten objekte malen.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Fuchsi

BeitragSa, Okt 14, 2006 9:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Frage ist dann nur was dann wirklich schneller wäre.

FreetimeCoder

BeitragSa, Okt 14, 2006 10:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Das hat ich noch aufm PC:
Also bei mir gibts wegen der Geschwinigkeit keine Pobleme, wie das bei anderen Meshobjekten aussieht weiß ich nicht.
Code: [AUSKLAPPEN]
Graphics3D 800,600, 0,2
SetBuffer BackBuffer()

Kamera=CreateCamera()
PositionEntity Kamera,0,0,-10

Sphere=CreateSphere(20) ;Ich hab jetzt mal viele Polys gemacht ;-)
cube=CreateCube()
PositionEntity Cube,2,2,0
cylinder=CreateCylinder(100)
PositionEntity cylinder,-2,-2,0

wireimage=CreateImage(GraphicsWidth(),GraphicsHeight())
MaskImage wireimage,0,0,0

While Not KeyHit(1)
   Cls
   EntityColor Sphere,255,0,0
   WireFrame 1
   AmbientLight 255,0,0
   TurnEntity Sphere,0,1,0
   TurnEntity cube,1,1,0
   TurnEntity cylinder,-1,-1,0
   RenderWorld
   CopyRect 0,0,GraphicsWidth(),GraphicsHeight(),0,0,BackBuffer(),ImageBuffer(wireimage)
   Cls
   AmbientLight 255,255,255
   EntityColor Sphere,255,255,255
   WireFrame 0
   RenderWorld
   DrawImage wireimage,0,0
   Flip
   FreeImage wireimage
   wireimage=CreateImage(GraphicsWidth(),GraphicsHeight())
   MaskImage wireimage,0,0,0
Wend
End


Ist nicht so wie Dreamora das vorschlägt, ich zeichne auf ein Bild, und zeige das dann an.
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA

Black Spider

BeitragSa, Okt 14, 2006 14:42
Antworten mit Zitat
Benutzer-Profile anzeigen
@FreetimeCoder:
so einen Code hab ich in ähnlicher Form irgendwo gefunden; weiss net ob´s hilfreich ist,
vll kannste damit ja was anfangen Fuchsi...

Code: [AUSKLAPPEN]
Graphics3D 640,480,16,2

cam=CreateCamera()
;MoveEntity cam,0,10,0
;TurnEntity cam,45,-15,30

l=CreateLight()

cube = CreateCube()
PositionEntity cube,0,0,10
ScaleEntity cube,2,2,2
EntityAlpha cube,0.2
surface = GetSurface(cube,1)
vertex  = CountVertices(surface)

For i=1 To vertex-1

      Line3D VertexX#(surface,i-1),VertexY#(surface,i-1),VertexZ#(surface,i-1), VertexX#(surface,i),VertexY#(surface,i),VertexZ#(surface,i),cube
 
Next


While 1

   If KeyHit(1) End

   TurnEntity cube,1,1,1
     
   RenderWorld
   Flip

Wend



Function Line3D(x1,y1,z1,x2,y2,z2,parent%=0)

      Entity = CreateCube(parent)
     
      EntityColor Entity,0,255,0
      EntityAlpha Entity,0.4
     
      If x1<>0 And y1<>0 And z1<>0 Or x2<>0 And y2<>0 And z2<>0
         dx#=x2 - x1
         dy#=y2 - y1
         dz#=z2 - z1
         ln#=Sqr(dx^2+dy^2+dz^2)
         
         PositionMesh Entity, 0, 0, 1
         AlignToVector Entity,dx,dy,dz,0
         PositionEntity Entity,x1,y1,z1
         ScaleEntity Entity,0.01,0.01,ln/2
               
         dx=dx/ln
         dy=dy/ln
         dz=dz/ln
      EndIf
End Function
Coming soon:
http://img132.imageshack.us/im...im2ab6.gif

FreetimeCoder

BeitragSa, Okt 14, 2006 14:47
Antworten mit Zitat
Benutzer-Profile anzeigen
@Blackspider:
Deinen Code kann man gut gebrauchen, wenn man alle Linien zeigen will. Bei meinem werden nur die Polygone gezeigt, die nicht durch das Backfaceculling unsichtbar sind.
"Wir haben keine Chance, aber wir werden sie nutzen!"
Projekte:
Dexterity Ball (100%)
Aquatic Atmosfear (22 % ca 4700 Zeilen) eingefrohren mangels OOP Fähigkeiten von Blitz
(ehemals Uboot)
PC: Intel D 3 GHz | NVidiaGforce 6700 256 Mb | 1024 Mb DDR RAM 400 Mhz | 2x160 GB S-ATA

StepTiger

BeitragSa, Okt 14, 2006 17:51
Antworten mit Zitat
Benutzer-Profile anzeigen
hier mal ein code, mit dem du alle wireframes anzeigst, ohne es durchsichtig zu machen.

Sieht allerdings ziemlich komisch aus ^^

Code: [AUSKLAPPEN]
Graphics3D 800,600,32,2
SetBuffer BackBuffer()

Type Mesh
   
   Field obj
   
End Type

cam=CreateCamera()

cube=CreateCube()
PositionEntity cube,0,0,10

RegisterMesh(cube)

EntityAlpha cube,.5

While Not KeyDown(1)
   
   Cls
   
   TurnEntity cube,1,1,0

   UpdateWorld
   RenderWorld
   
   Color 255,255,255
   DrawLines(cam)
   
   Flip
   
Wend

Function DrawLines(cam)
   
   Local vx[3]
   Local vy[3]
   
   For x.Mesh=Each Mesh
      
      For faces=1 To CountSurfaces(x\obj)
         
         surf=GetSurface(x\obj,faces)
         
         maxtri=CountTriangles(surf)-1
         
         For tris=0 To maxtri
            
            For do=0 To 2
               
               tvx#=VertexX(surf,TriangleVertex(surf,tris,do))
               tvy#=VertexY(surf,TriangleVertex(surf,tris,do))
               tvz#=VertexZ(surf,TriangleVertex(surf,tris,do))
               
               TFormPoint tvx#,tvy#,tvz#,x\obj,0
               CameraProject cam,TFormedX(),TFormedY(),TFormedZ()
               
               rx=ProjectedX()
               ry=ProjectedY()
               
               vx[do]=rx
               vy[do]=ry
               
            Next
            
            For do=0 To 2
               
               do2=(do+1) Mod 3
               
               vx0=vx[do]
               vy0=vy[do]
               vx1=vx[do2]
               vy1=vy[do2]
               Line vx0,vy0,vx1,vy1
               
            Next
            
            If KeyDown(57) And tris>0 Then RuntimeError ""
            
         Next
         
      Next
      
   Next
   
End Function

Function RegisterMesh(mesh)
   
   x.Mesh=New Mesh
   x\obj=mesh
   
End Function
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.

Fuchsi

BeitragSa, Okt 14, 2006 20:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist nicht komisch, dass ist genau das was ich brauche.
Danke euch Allen!

MfG Fuchsi

Mr.Keks

BeitragSo, Okt 15, 2006 14:06
Antworten mit Zitat
Benutzer-Profile anzeigen
dreamoras methode ist dennoch toller, weil 3dbeschleunigt! Wink

Code: [AUSKLAPPEN]
Graphics3D 800,600,32,2
SetBuffer BackBuffer()

cam=CreateCamera()

cube=CreateCube()
PositionEntity cube,0,0,10

EntityAlpha cube,.5

While Not KeyDown(1)
   
   Cls
   
   TurnEntity cube,1,1,0

   UpdateWorld
   RenderWorld
   CameraClsMode cam,0,1
   CameraFogRange cam,.01,.01
   CameraFogColor cam,0,0,0
   CameraFogMode cam,1
   WireFrame 1
   RenderWorld
   WireFrame 0
   CameraFogMode cam,0

   Flip
   
Wend
MrKeks.net

5k41

BeitragSo, Okt 15, 2006 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
hab das ganze grad mal in eine Funktion gepackt:
Code: [AUSKLAPPEN]

Function RenderWorldWireFrame(camera,switch)
   
   If switch = 0 Then
      RenderWorld
   Else
      RenderWorld
      CameraClsMode camera,False,True
      WireFrame 1
      RenderWorld
      WireFrame 0
   EndIf
   
End Function

nur sieht es bei mir relativ merkwürdig aus Confused

~Edit~
Aha!
Ich glaub es sieht so komsich aus, da die Wireframe linien ja eigentlich die Farbe der Textur haben, heißt wo ne Textur drüber ist sieht man die linien nicht / nur halb...
~Edit2~
Und da hab ich den Sinn von Keks Fog verstanden Very Happy
Code: [AUSKLAPPEN]

Function RenderWorldWireFrame(camera,switch)
   
   If switch = 0 Then
      RenderWorld
   Else
      RenderWorld
      CameraClsMode camera,False,True
      CameraFogRange camera,.01,.01
         CameraFogColor camera,0,0,0
         CameraFogMode camera,1
      WireFrame 1
      RenderWorld
      WireFrame 0
      CameraFogMode camera,0
   EndIf
   
End Function

sorry für die belästigung!
Projekte:
For a better World - Gesellschaftsspiel ( 100%)

User posted image

Mr.Keks

BeitragSo, Okt 15, 2006 20:46
Antworten mit Zitat
Benutzer-Profile anzeigen
5k41 hat Folgendes geschrieben:
~Edit2~
Und da hab ich den Sinn von Keks Fog verstanden Very Happy
toller trick, was? (= bin ich voll stolz drauf! xD
MrKeks.net
 

lettorTrepuS

BeitragMo, Okt 16, 2006 7:24
Antworten mit Zitat
Benutzer-Profile anzeigen
-aus Sicherheitsgründen gelöscht- Diese Information ist mit Ihrer Sicherheitsfreigabe leider nicht erhältlich, Bürger.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group