Fläche Erstellen

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

Matthias

Betreff: Fläche Erstellen

BeitragMi, Sep 27, 2006 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hay!!

Ich arbeite gerade an einem 3D-Editor und nun habe ich das Problem
mit den Flächen. Also Wenn man WireFrame 1 macht dan sieht mann
das Gitternetz aber da werden einen auch immer die Diagonalen
angezeigt das bringt einen voll durcheinader. So deshalb habe ich eine
Function geschriben die das verhindert Bei Kugeln,Cylinder,Kegeln und auch Würfeln get es aber mit den Flächen da komme ich einfach nicht weiter.
Vieleicht kennt sich da jemand besser aus und kann mir helfen.

Wäre echt dankbar. Im Archiv gibt es die erste Version von dem Prg 3D-Test


Code: [AUSKLAPPEN]


Graphics3D 800,600,32,2
Dim EObj(1),Mesh(1)

Cam=CreateCamera():lis=CreateLight()
PositionEntity Cam,0,0,-5

CameraRange Cam,1,20


EObj(0)=CreateSphere(8):LESEMESH(0):HideEntity EObj(0);" -----Geht-----"
;ERZGFLACHE(0,16,16):LESEMESH(0):HideEntity EObj(0):TurnEntity Mesh(0),90,0,0
;ScaleEntity Mesh(0),3,1,3;"----------Geht Nicht------------"



WireFrame 1

Repeat:
RenderWorld
Select KeyDown(200):Case 1:MoveEntity Cam,0,0,.1:End Select
Select KeyDown(208):Case 1:MoveEntity Cam,0,0,-.1:End Select

Flip
Until KeyDown(1)=1
End



Function LESEMESH(Ob)
Add=GetSurface(EObj(Ob),1)
MaxV=CountVertices(Add):MaxT=CountTriangles(Add)*3
Local VX#[50000],VY#[50000],VZ#[50000],LV[30000],LB[30000],Q#=-.0001
Select Mesh(Ob):Case 0:Default:FreeEntity Mesh(Ob):End Select


For ZZ=0 To MaxV-1
VX[ZZ]=VertexX(Add,ZZ):VY[ZZ]=VertexY(Add,ZZ):VZ[ZZ]=VertexZ(Add,ZZ)
Next

OO=1
For ZZ=0 To MaxT-1
Select ZZ Mod 3
Case 0:
LR=ZZ/3
V0=TriangleVertex(Add,LR,0):V1=TriangleVertex(Add,LR,1):V2=TriangleVertex(Add,LR,2)
LV[OO]=V0:LB[OO]=V1:OO=OO+1:Case 1
LV[OO]=V1:LB[OO]=V2:OO=OO+1:Case 2
LV[OO]=V0:LB[OO]=V2:OO=OO+1:End Select
Select LV[OO-1]:Case LV[OO-2]:Select LB[OO-1]:Case LB[OO-2]
OO=OO-2:End Select:End Select
Next



OO=OO-1
Mesh(Ob)=CreateMesh():PositionEntity Mesh(Ob),EntityX(EObj(Ob)),EntityY(EObj(Ob)),EntityZ(EObj(Ob))
Add=CreateSurface(Mesh(Ob))
For ZZ=0 To MaxV
AddVertex Add,VX[ZZ],VY[ZZ],VZ[ZZ]
AddVertex Add,VX[ZZ]+Q#,VY[ZZ]+Q#,VZ[ZZ]+Q#
Next
For ZZ=1 To OO
AddTriangle Add,LV[ZZ]*2,LB[ZZ]*2+1,LB[ZZ]*2
AddTriangle Add,LV[ZZ]*2,LB[ZZ]*2,LB[ZZ]*2+1
Next


EntityFX Mesh(Ob),1
End Function





Function ERZGFLACHE(Me,SeX,SeY)
Local Fe[32400]
Local NX#,NY#
EObj(Me)=CreateMesh():surf=CreateSurface(EObj(Me))

For ZY=0 To seX:For ZX=0 To seY
NX#=ZX*(1/Float(SeX))*-1:NY#=ZY*(1/Float(SeY))*-1
AddVertex surf,NX+.5,0,NY+.5,NX,NY*-1,0

Fe[ZX*180+ZY]=NN
NN=NN+1:Next:Next

For ZX=1 To SeX
For ZY=1 To SeY

AddTriangle surf,Fe[(ZX-1)*180+ZY-1],Fe[ZX*180+ZY],Fe[ZX*180+ZY-1]   
AddTriangle surf,Fe[(ZX-1)*180+ZY-1],Fe[(ZX-1)*180+ZY],Fe[ZX*180+ZY]
Next:Next
End Function


 

Matthias

BeitragDo, Sep 28, 2006 12:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Schade das mir niemand helfen konnte. Habe jetzt das problem selber gelöst.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group