Problem mit CreateMesh...
Übersicht

X0rBetreff: Problem mit CreateMesh... |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Erstmal die Mesh-Informationen:
Code: [AUSKLAPPEN] 24
-1.0 1.0 -1.0 #################### 1.0 1.0 -1.0 #################### 1.0 -1.0 -1.0 #################### -1.0 -1.0 -1.0 #################### 1.0 1.0 -1.0 #################### 1.0 1.0 1.0 #################### 1.0 -1.0 1.0 #################### 1.0 -1.0 -1.0 #################### 1.0 1.0 1.0 #################### -1.0 1.0 1.0 #################### -1.0 -1.0 1.0 #################### 1.0 -1.0 1.0 #################### -1.0 1.0 1.0 #################### -1.0 1.0 -1.0 #################### -1.0 -1.0 -1.0 #################### -1.0 -1.0 1.0 #################### -1.0 1.0 1.0 #################### 1.0 1.0 1.0 #################### 1.0 1.0 -1.0 #################### -1.0 1.0 -1.0 #################### -1.0 -1.0 -1.0 #################### 1.0 -1.0 -1.0 #################### 1.0 -1.0 1.0 #################### -1.0 -1.0 1.0 #################### 12 0 1 2 ################### 0 2 3 ################### 4 5 6 ################### 4 6 7 ################### 8 9 10 ################### 8 10 11 ################### 12 13 14 ################### 12 14 15 ################### 16 17 18 ################### 16 18 19 ################### 20 21 22 ################### 20 22 23 ################### 24 0.0 0.0 1.0 ################### 0.0 0.0 1.0 ################### 0.0 0.0 1.0 ################### 0.0 0.0 1.0 ################### -1.0 0.0 0.0 ################### -1.0 0.0 0.0 ################### -1.0 0.0 0.0 ################### -1.0 0.0 0.0 ################### 0.0 0.0 -1.0 ################### 0.0 0.0 -1.0 ################### 0.0 0.0 -1.0 ################### 0.0 0.0 -1.0 ################### 1.0 0.0 0.0 ################### 1.0 0.0 0.0 ################### 1.0 0.0 0.0 ################### 1.0 0.0 0.0 ################### 0.0 -1.0 0.0 ################### 0.0 -1.0 0.0 ################### 0.0 -1.0 0.0 ################### 0.0 -1.0 0.0 ################### 0.0 1.0 0.0 ################### 0.0 1.0 0.0 ################### 0.0 1.0 0.0 ################### 0.0 1.0 0.0 ################### 24 0.0 0.0 0.0 0.0 ################### 1.0 0.0 1.0 0.0 ################### 1.0 1.0 1.0 1.0 ################### 0.0 1.0 0.0 1.0 ################### 0.0 0.0 0.0 0.0 ################### 1.0 0.0 1.0 0.0 ################### 1.0 1.0 1.0 1.0 ################### 0.0 1.0 0.0 1.0 ################### 0.0 0.0 0.0 0.0 ################### 1.0 0.0 1.0 0.0 ################### 1.0 1.0 1.0 1.0 ################### 0.0 1.0 0.0 1.0 ################### 0.0 0.0 0.0 0.0 ################### 1.0 0.0 1.0 0.0 ################### 1.0 1.0 1.0 1.0 ################### 0.0 1.0 0.0 1.0 ################### 0.0 0.0 0.0 0.0 ################### 1.0 0.0 1.0 0.0 ################### 1.0 1.0 1.0 1.0 ################### 0.0 1.0 0.0 1.0 ################### 0.0 0.0 0.0 0.0 ################### 1.0 0.0 1.0 0.0 ################### 1.0 1.0 1.0 1.0 ################### 0.0 1.0 0.0 1.0 ################### Nun der Code zum laden des Meshes: Code: [AUSKLAPPEN] file=ReadFile("mesh.txt") If file Graphics3D 1024,768 SetBuffer BackBuffer() cam = CreateCamera() MoveEntity cam, 0,0,-7 mesh=CreateMesh() surf=CreateSurface(mesh) ;Vertices vnum$=ReadLine(file) vtnum=vnum$ vtnum=vtnum-1 Dim vertex(vtnum) For a=0 To vtnum vertex(a) = AddVertex (surf,ReadLine(file),ReadLine(file),ReadLine(file),0 ,0) ReadLine(file) Next ;Tris triss$=ReadLine(file) tris=triss$ tris=tris-1 For t=0 To tris AddTriangle (surf,vertex(ReadLine(file)),vertex(ReadLine(file)),vertex(ReadLine(file))) ReadLine(file) Next nnums$=ReadLine(file) nnum=nnums nnum=nnum-1 ;Normals For a=0 To nnum VertexNormal(surf,vertex(a),ReadLine(file),ReadLine(file),ReadLine(file)) ReadLine(file) Next ;Texture coords uvcoordss$=ReadLine(file) uvcoords=uvcoordss$ uvcoords=uvcoords-1 For a=0 To uvcoords VertexTexCoords(surf,vertex(a),ReadLine(file),ReadLine(file),0) VertexTexCoords(surf,vertex(a),ReadLine(file),ReadLine(file),1) ReadLine(file) Next UpdateNormals(mesh) EntityTexture mesh,LoadTexture("stroh_3.jpg") Repeat TurnEntity mesh,0,1,0 RenderWorld() Flip Until KeyHit(1) CloseFile(file) End EndIf Das Problem ist, dass wenn das mesh texturiert ist und sich dreht, dass das dann irgendwie komisch aussieht... Was mache ich falsch? |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn Du mit 'komisch' meinst dass Teile nicht sichtbar sind würde ich mal checken ob alle Vertices in der selben Rotationsrichtung erstellt wurden. flipmesh![]() |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
X0r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein, nein, das mesh ist schon sichtbar. Hab das Problem auch in nem anderen Forum angesprochen.
Das Problem liegt an folgender Zeile: >AddTriangle (surf,vertex(ReadLine(file)),vertex(ReadLine(file)),vertex(ReadLine(file))) Blitz scheint die Parameter von hinten aus zu bearbeiten. In diesem Fall halt ne umgekehrte Index-Reihenfolge. |
||
![]() |
Lunatix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dus solltest "irgendwie komisch" mal beschreiben, dann kann man dir sicher besser helfen. Mache mit [Druck] einen Blidschirmscreenshot und lade diesen im Archiv hoch und stelle es als Bild hier rein.
Allerdings ist ReadLine auch nicht unbedingt für Integer gedacht. Wie hast du die Datei erstellt? Hast du das Modell mit einem blitzbasic programm nach Surfaces & Vertices durchsucht und diese dann in eine Datei gespeichert? Oder hast du sie selber geschrieben? Auch sieht folgender Abschnitt komisch aus : Code: [AUSKLAPPEN] 1.0
#################### 12 0 1 2 ################### 12? Aus 4 Positionen kann man keine Triangle machen. Vielleicht liest du dadurch den kompletten Trianglecode falsch ein? Allerdings, speicherst du die Vertices nacheinander, kannst du auch folgendes machen: Du ermittelst mit CountSurfaces ![]() Du ermittelst mit CountTriangles ![]() Und nun gehst du die Triangles durch und für jede Triangle kannst du 3 Vertices (Per TriangleVertex ![]() ![]() Dabei kann nichts mehr schiefgehen =) |
||
X0r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
>us solltest "irgendwie komisch" mal beschreiben, dann kann man dir sicher besser helfen. Mache mit [Druck] einen Blidschirmscreenshot und lade diesen im Archiv hoch und stelle es als Bild hier rein.
Ich hab doch den code gepostet. Wozu noch extra nen Screenshot? ![]() Und außerdem ist das Problem schon gelöst... Zitat: Allerdings ist ReadLine auch nicht unbedingt für Integer gedacht. Wie hast du die Datei erstellt? Hast du das Modell mit einem blitzbasic programm nach Surfaces & Vertices durchsucht und diese dann in eine Datei gespeichert? Oder hast du sie selber geschrieben?
Natürlich ist ReadLine nicht für Integer gedacht. Wo lese ich denn bitte Integer-Werte mit Readline aus? Die Datei liegt als ASCII vor(Und das hat auch seinen Grund). ![]() Selber geschrieben? Ne, so viel Zeit habe ich nicht. Hab natürlich ein Programm für geschrieben. Zitat: 12? Aus 4 Positionen kann man keine Triangle machen. Vielleicht liest du dadurch den kompletten Trianglecode falsch ein?
Ja 12, die steht nämlich für die Anzahl der Triangles. Dann folgen die 3 Vertex-Index-Werte. Wie schon gesagt, lag das Problem an folgendem Code: >>AddTriangle (surf,vertex(ReadLine(file)),vertex(ReadLine(file)),vertex(ReadLine(file))) Denn der BlitzBasic Compiler bearbeitet die Parameter von rechts nach links. Und so kommts dann, dass daraus ne umgekehrte Index-Reihenfolge entsteht und dann siehts logischer Weise auch komisch aus. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Tatsächlich werden die Koordinaten bei AddVertex![]() BeweisCode: [AUSKLAPPEN] Graphics3D 800,600,0,2
SetBuffer BackBuffer() Local Path$="E:\" Local File% Local Mesh%=CreateMesh() Local Face%=CreateSurface(Mesh) Local V0%,V1%,V2% File=WriteFile(Path+"test.txt") WriteLine File,"-1": WriteLine File,"+2" WriteLine File,"+3": WriteLine File,"+4" WriteLine File," 0": WriteLine File,"-5" CloseFile(File) File=ReadFile(Path+"test.txt") Print "v0: "+ReadLine(File)+" "+ReadLine(File) Print "v1: "+ReadLine(File)+" "+ReadLine(File) Print "v2: "+ReadLine(File)+" "+ReadLine(File) CloseFile(File) File=ReadFile(Path+"test.txt") V0=AddVertex(Face,ReadLine(File),ReadLine(File),4) V1=AddVertex(Face,ReadLine(File),ReadLine(File),4) V2=AddVertex(Face,ReadLine(File),ReadLine(File),4) CloseFile(File) Print "" Print "v0: "+VertexX(Face,V0)+" "+VertexY(Face,V0) Print "v1: "+VertexX(Face,V1)+" "+VertexY(Face,V1) Print "v2: "+VertexX(Face,V2)+" "+VertexY(Face,V2) WaitKey End |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
X0r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nein, das hat mit der Funktion nix zu tun, das liegt ganz einfach am Compiler. Denn schreibt man:
x.f=ReadInt(file) y.f=ReadInt(file) z.f=ReadInt(file) AddVertex(surf,x,y,z) dann funktioniert es perfekt. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das ist doch genau das was ich sage. Blitz3D bearbeitet den Befehl AddVertex![]() ![]() Man muß doch nicht jeden kleinen Tritt in den Hintern mit komplett fertigen Code begleiten. ![]() |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
X0r |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
>Tatsächlich werden die Koordinaten bei AddVertex von hinten nach vorne gelesen und verarbeitet
So kann aber ganz leicht ein Missverständnis entstehen. Denn du hast gesagt, dass Blitz3D den Befehl AddVertex von hinten nach vorne abarbeite. Der Compiler macht das aber generell bei allen Funktionen. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group