Fläche Erstellen
Übersicht

MatthiasBetreff: Fläche Erstellen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Schade das mir niemand helfen konnte. Habe jetzt das problem selber gelöst. | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group