LinePick sehen?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Megamag

Betreff: LinePick sehen?

BeitragFr, Aug 14, 2009 11:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Gibt es eine Möglichkeit den LinePick sichtbar zu machen?
Also dass eine Linie von dem einen Punkt zum anderen gezeigt wird?
Das würde mir das ganze Rumprobieren und Einstellen des LinePicks ziemlich erleichtern...

Nicdel

BeitragFr, Aug 14, 2009 11:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielleicht in dem du eine 3D-Linie zeichnest... Hier ist der Code für so was: http://www.blitzbasic.com/code...p?code=839
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

Krischan

BeitragFr, Aug 14, 2009 11:28
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, ich habe dafür eine Funktion "Line3D", hier ein kleines Beispiel:

Aufruf mit

mesh=Line3D(linie,startx,starty,startz,zielx,ziely,zielz,rot,gruen,blau,alpha,parent)

Achtung: Linepick benutzt anstatt zielx/y/z das Delta zwischen den Koordinaten, diese Funktion zeichnet nur eine Linie zwischen Start (hier: Cube) und Ziel (hier: Sphere)!

Code: [AUSKLAPPEN]
Graphics3D 800,600,32,2

Const movespeed#=0.01

; Kamera
cam=CreateCamera()
CameraRange cam,0.1,1000
PositionEntity cam,0,0,-2

; Pivots
Global wiref_piv = CreatePivot()
Global solid_piv = CreatePivot()

cube=CreateCube(solid_piv)
ScaleEntity cube,0.1,0.1,0.1

sphere=CreateSphere(8,solid_piv)
PositionEntity sphere,2,2,2
ScaleEntity sphere,0.1,0.1,0.1

linie=Line3D(Line,0,0,0,2,2,2,64,128,255,0.5,wiref_pivot)
   
; Maus in die Mitte
MoveMouse GraphicsWidth()/2,GraphicsHeight()/2

; Hauptloop
While Not KeyHit(1)
   
   ; Maussteuerung
    mxs#=MouseXSpeed() : mys#=MouseYSpeed() : pitch#=EntityPitch(cam)+(mys#/5)
    If pitch>89 Then pitch=89 Else If pitch<-89 Then pitch=-89
    RotateEntity cam,pitch,EntityYaw(cam)-(mxs#/5),0
   MoveMouse GraphicsWidth()/2,GraphicsHeight()/2
   
    ; Tastatursteuerung
   If KeyDown(200) Then MoveEntity cam,0,0,movespeed
   If KeyDown(208) Then MoveEntity cam,0,0,-movespeed
   If KeyDown(205) Then MoveEntity cam,movespeed,0,0
   If KeyDown(203) Then MoveEntity cam,-movespeed,0,0
    If KeyHit(57) Then wf=1-wf
   
    ; Render wireframe objects.
    WireFrame 1 : ShowEntity wiref_piv : HideEntity solid_piv
    CameraClsMode cam,1,1 : RenderWorld

    ; Render solid objects.
    WireFrame wf : HideEntity wiref_piv : ShowEntity solid_piv
    CameraClsMode cam,0,0 : RenderWorld
   
   Flip
   
Wend

End

; 3D-Linie zwischen zwei Punkten zeichnen
Function Line3D(mesh,x0#,y0#,z0#,x1#,y1#,z1#,r%=255,g%=255,b%=255,a#=1.0,parent%=False)
   
   If mesh=0 Then
      mesh=CreateMesh(parent)
      surf=CreateSurface(mesh)
      EntityFX mesh,1+2+16+32
   Else
      last_surf=CountSurfaces(mesh)
      surf=GetSurface(mesh,last_surf)
      If CountVertices(surf)>30000 Then surf=CreateSurface(mesh)
   End If
   
    v0=AddVertex(surf,x1,y1,z1)
   v1=AddVertex(surf,x0,y0,z0)
   AddTriangle surf,v0,v0,v1
   
    VertexColor surf,v0,r,g,b,a
   VertexColor surf,v1,r,g,b,a
   
   Return mesh
   
End Function

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group