Include | | | | - Page 1 - |
| Andreas Gaida | Hi! Habe eine kleine Include File geschrieben per 3D OBJ Daten einlesen und Dastellen unter XProfan 10. Einschränkungen: Bis jetzt sind nur Triangels und Quads eingebaut womit man eigentlich die meisten OBJ File lesen können sollte. Es können nur OBJ File gelesen werden wo jede zeile mit @Chr$(13)+@Chr$(10) abgeschlossen wurde. File dürfen nicht zu grande sein und es dürfen nicht mehrere objeckte in einer File sein.
In der Zip datei è sich ein Demo Program als Exe und als Quellcode und die OBJ Inc.
Wie gesagt ist noch nicht ganz fertig aber ich hoffe das der eine oder andere schon damit was anfangen kann. Hoffe mit der Zeit die Inc erweitern zu können.
Programm: mit Tasten : 1,2,3,4,5,6,0 kann man die verschiedenen OBJ Daten laden. je nach Rechenleistung dauert das bis zu 1 min vorallem die nr.5 Tasten +/- sind zum zoomen und die Curso Tasten zum drehen des Objekts.
MfG Andreas |
| 683 kB | | Kurzbeschreibung: | OBJ Include mit 3D OBJ Daten und Beispiel Programm | | Hochgeladen: | 21.12.2006 | | Downloadcounter: | | | | Download |
| | | Athlon X2 4800 , 2GB Ram , GeForce 7800GT Windows XP Pro , XProfan 10 und 11 , Profan2Cpp 1.6b | 21.12.2006 ▲ |
| |
| | | | - Page 3 - |
| | | Habe jetzt mal das Programm zum Umwandeln der obj intensive getestet. Es gibt bei meinem Test überhaupt nichts zu beanstanden. Habe die Hauptdatei per meine Zwecke angepasst und die INC unangetastet gelassen(die macht die komplette Umwandlungsarbeit).
Habe selber Texturen und 3d-Körper hergestellt im Objekt-Format , einmal mit Blender3d und Wings3d und dann umgewandelt. Alles wird sauber eingelesen und bunt dargestellt (100%tig).
Es ist selten so ein wunderbares Tool zu finden, welches der Open-Gl-Anwender dringend braucht um nicht den ganzen Körper zu Fuss einzugeben. Gratulation. Ich habe das gefühl, das manche Open-Gl-Anwender garnicht wissen, was per eine hilfreiche Perle hier schlummert.
Die Texturen von eine Bitmap den Körper zu bringen mit Blender3D und Wings3D ist nicht schwer, geht zügig bis zum ersten Resultat. Das schwerste war, die Lektüre zu suchen in Deutsch.
Wer schnell Körper mit Texturen herstellen möchte per OpenGl, den kann ich Wings3D ans Herz legen, benutze ich jetzt auch. Blender3D dagegen ist ein Hyperprogramm, weil man damit fast alles machen kann was das Künstlerherz begehrt. Das was ich hier brauche, Körper herstellen und Texturen einrichten sind nur 0,00001% vom dem , was Blender3D noch machen kann.
Wer mehr circa einfacheTexturen per die 3D-Körper erfahren möchte mit Blender3D oder Wings3D, den kann ich weiterhelfen, bevor er sich im Dschungel berirrt und keine Lust mehr hat, Grafiken /Texturen einzuri chten.
mfg peter |
| | | | |
| | | Die Object.zip V002 oben ist die Neueste, die bei mir alles einlesen kann ohne beanstandungen.
mfg |
| | | | |
| | |
Das XPGL ist doch schon mal nicht schlecht...
XPGL finde ich auch klasse.
Eigentlich sind alle Proceduren in der INC drin, vom Punkt circa Dreieck bis zum Polygon, (mehr werden in dem 3d-Körpert nicht benutzt.) welche auch in der XPGL genutzt werden können.
Der Anfang wäre schon da.
mfg KompilierenMarkierenSeparieren
PROC Polygonx
Parameters datax$,anzahl&
declare data$,data2$,data3$,count&
declare x1!,y1!,z1!,V_Zeiger&
declare x2!,y2!,z2!,VT_Zeiger&
declare x3!,y3!,z3!,VN_Zeiger&
rückgabe& =oGL("glBegin",~GL_POLYGON)
------------------------------------------------------
WhileLoop (anzahl&-1)
count& = anzahl& - &loop
count& = 0 - count&
data2$ = SubStr$(datax$ ,count&," ")
data3$ = SubStr$(data2$, 1,"/")
V_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$, 2,"/")
VT_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$,-1,"/")
VN_Zeiger& = @Val(data3$)
data$ = OBJ_Vertex_V$[V_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x1! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y1! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z1! = @Val(data2$)
data$ = OBJ_Vertex_VT$[VT_Zeiger&]
data2$ = SubStr$(data$,-2," ")
x2! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
y2! = @Val(data2$)
data$ = OBJ_Vertex_VN$[VN_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x3! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y3! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z3! = @Val(data2$)
oGL("glNormal3f",x3!,y3!,z3!)
oGL("glTexCoord2f",x2!,y2!)
oGL("glVertex3f",x1!,y1!,z1!)
EndWhile
------------------------------------------------------
rückgabe& = oGL("glEnd")
ENDPROC
PROC Triangle
Parameters datax$,data$,data2$,data3$
declare x1!,y1!,z1!,V_Zeiger&
declare x2!,y2!,z2!,VT_Zeiger&
declare x3!,y3!,z3!,VN_Zeiger&
rückgabe& =oGL("glBegin",~GL_TRIANGLES)
------------------------------------------------------
data2$ = SubStr$(datax$ ,-3," ")
data3$ = SubStr$(data2$, 1,"/")
V_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$, 2,"/")
VT_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$,-1,"/")
VN_Zeiger& = @Val(data3$)
data$ = OBJ_Vertex_V$[V_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x1! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y1! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z1! = @Val(data2$)
data$ = OBJ_Vertex_VT$[VT_Zeiger&]
data2$ = SubStr$(data$,-2," ")
x2! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
y2! = @Val(data2$)
data$ = OBJ_Vertex_VN$[VN_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x3! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y3! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z3! = @Val(data2$)
oGL("glNormal3f",x3!,y3!,z3!)
oGL("glTexCoord2f",x2!,y2!)
oGL("glVertex3f",x1!,y1!,z1!)
------------------------------------------------------
data2$ = SubStr$(datax$ ,-2," ")
data3$ = SubStr$(data2$, 1,"/")
V_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$, 2,"/")
VT_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$,-1,"/")
VN_Zeiger& = @Val(data3$)
data$ = OBJ_Vertex_V$[V_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x1! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y1! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z1! = @Val(data2$)
data$ = OBJ_Vertex_VT$[VT_Zeiger&]
data2$ = SubStr$(data$,-2," ")
x2! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
y2! = @Val(data2$)
data$ = OBJ_Vertex_VN$[VN_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x3! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y3! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z3! = @Val(data2$)
oGL("glNormal3f",x3!,y3!,z3!)
oGL("glTexCoord2f",x2!,y2!)
oGL("glVertex3f",x1!,y1!,z1!)
------------------------------------------------------
data2$ = SubStr$(datax$ ,-1," ")
data3$ = SubStr$(data2$, 1,"/")
V_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$, 2,"/")
VT_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$,-1,"/")
VN_Zeiger& = @Val(data3$)
data$ = OBJ_Vertex_V$[V_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x1! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y1! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z1! = @Val(data2$)
data$ = OBJ_Vertex_VT$[VT_Zeiger&]
data2$ = SubStr$(data$,-2," ")
x2! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
y2! = @Val(data2$)
data$ = OBJ_Vertex_VN$[VN_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x3! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y3! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z3! = @Val(data2$)
oGL("glNormal3f",x3!,y3!,z3!)
oGL("glTexCoord2f",x2!,y2!)
oGL("glVertex3f",x1!,y1!,z1!)
------------------------------------------------------
rückgabe& = oGL("glEnd")
ENDPROC
PROC Quadrat
Parameters datax$,data$,data2$,data3$
declare x1!,y1!,z1!,V_Zeiger&
declare x2!,y2!,z2!,VT_Zeiger&
declare x3!,y3!,z3!,VN_Zeiger&
rückgabe& =oGL("glBegin",~GL_QUADS)
data2$ = SubStr$(datax$ ,-4," ")
data3$ = SubStr$(data2$, 1,"/")
V_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$, 2,"/")
VT_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$,-1,"/")
VN_Zeiger& = @Val(data3$)
data$ = OBJ_Vertex_V$[V_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x1! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y1! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z1! = @Val(data2$)
data$ = OBJ_Vertex_VT$[VT_Zeiger&]
data2$ = SubStr$(data$,-2," ")
x2! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
y2! = @Val(data2$)
data$ = OBJ_Vertex_VN$[VN_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x3! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y3! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z3! = @Val(data2$)
oGL("glNormal3f",x3!,y3!,z3!)
oGL("glTexCoord2f",x2!,y2!)
oGL("glVertex3f",x1!,y1!,z1!)
------------------------------------------------------
data2$ = SubStr$(datax$ ,-3," ")
data3$ = SubStr$(data2$, 1,"/")
V_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$, 2,"/")
VT_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$,-1,"/")
VN_Zeiger& = @Val(data3$)
data$ = OBJ_Vertex_V$[V_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x1! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y1! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z1! = @Val(data2$)
data$ = OBJ_Vertex_VT$[VT_Zeiger&]
data2$ = SubStr$(data$,-2," ")
x2! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
y2! = @Val(data2$)
data$ = OBJ_Vertex_VN$[VN_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x3! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y3! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z3! = @Val(data2$)
oGL("glNormal3f",x3!,y3!,z3!)
oGL("glTexCoord2f",x2!,y2!)
oGL("glVertex3f",x1!,y1!,z1!)
------------------------------------------------------
data2$ = SubStr$(datax$ ,-2," ")
data3$ = SubStr$(data2$, 1,"/")
V_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$, 2,"/")
VT_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$,-1,"/")
VN_Zeiger& = @Val(data3$)
data$ = OBJ_Vertex_V$[V_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x1! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y1! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z1! = @Val(data2$)
data$ = OBJ_Vertex_VT$[VT_Zeiger&]
data2$ = SubStr$(data$,-2," ")
x2! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
y2! = @Val(data2$)
data$ = OBJ_Vertex_VN$[VN_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x3! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y3! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z3! = @Val(data2$)
oGL("glNormal3f",x3!,y3!,z3!)
oGL("glTexCoord2f",x2!,y2!)
oGL("glVertex3f",x1!,y1!,z1!)
------------------------------------------------------
data2$ = SubStr$(datax$ ,-1," ")
data3$ = SubStr$(data2$, 1,"/")
V_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$, 2,"/")
VT_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$,-1,"/")
VN_Zeiger& = @Val(data3$)
data$ = OBJ_Vertex_V$[V_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x1! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y1! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z1! = @Val(data2$)
data$ = OBJ_Vertex_VT$[VT_Zeiger&]
data2$ = SubStr$(data$,-2," ")
x2! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
y2! = @Val(data2$)
data$ = OBJ_Vertex_VN$[VN_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x3! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y3! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z3! = @Val(data2$)
oGL("glNormal3f",x3!,y3!,z3!)
oGL("glTexCoord2f",x2!,y2!)
oGL("glVertex3f",x1!,y1!,z1!)
------------------------------------------------------
rückgabe& = oGL("glEnd")
ENDPROC
PROC Linex
Parameters datax$,data$,data2$,data3$
declare x1!,y1!,z1!,V_Zeiger&
declare x2!,y2!,z2!,VT_Zeiger&
declare x3!,y3!,z3!,VN_Zeiger&
rückgabe& =oGL("glBegin",~GL_LINES)
------------------------------------------------------
data2$ = SubStr$(datax$ ,-2," ")
data3$ = SubStr$(data2$, 1,"/")
V_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$, 2,"/")
VT_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$,-1,"/")
VN_Zeiger& = @Val(data3$)
data$ = OBJ_Vertex_V$[V_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x1! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y1! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z1! = @Val(data2$)
data$ = OBJ_Vertex_VT$[VT_Zeiger&]
data2$ = SubStr$(data$,-2," ")
x2! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
y2! = @Val(data2$)
data$ = OBJ_Vertex_VN$[VN_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x3! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y3! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z3! = @Val(data2$)
oGL("glNormal3f",x3!,y3!,z3!)
oGL("glTexCoord2f",x2!,y2!)
oGL("glVertex3f",x1!,y1!,z1!)
------------------------------------------------------
data2$ = SubStr$(datax$ ,-1," ")
data3$ = SubStr$(data2$, 1,"/")
V_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$, 2,"/")
VT_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$,-1,"/")
VN_Zeiger& = @Val(data3$)
data$ = OBJ_Vertex_V$[V_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x1! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y1! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z1! = @Val(data2$)
data$ = OBJ_Vertex_VT$[VT_Zeiger&]
data2$ = SubStr$(data$,-2," ")
x2! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
y2! = @Val(data2$)
data$ = OBJ_Vertex_VN$[VN_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x3! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y3! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z3! = @Val(data2$)
oGL("glNormal3f",x3!,y3!,z3!)
oGL("glTexCoord2f",x2!,y2!)
oGL("glVertex3f",x1!,y1!,z1!)
------------------------------------------------------
rückgabe& = oGL("glEnd")
ENDPROC
PROC Pointx
Parameters datax$,data$,data2$,data3$
declare x1!,y1!,z1!,V_Zeiger&
declare x2!,y2!,z2!,VT_Zeiger&
declare x3!,y3!,z3!,VN_Zeiger&
rückgabe& =oGL("glBegin",~GL_POINTS)
------------------------------------------------------
data2$ = SubStr$(datax$ ,-1," ")
data3$ = SubStr$(data2$, 1,"/")
V_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$, 2,"/")
VT_Zeiger& = @Val(data3$)
data3$ = SubStr$(data2$,-1,"/")
VN_Zeiger& = @Val(data3$)
data$ = OBJ_Vertex_V$[V_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x1! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y1! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z1! = @Val(data2$)
data$ = OBJ_Vertex_VT$[VT_Zeiger&]
data2$ = SubStr$(data$,-2," ")
x2! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
y2! = @Val(data2$)
data$ = OBJ_Vertex_VN$[VN_Zeiger&]
data2$ = SubStr$(data$,-3," ")
x3! = @Val(data2$)
data2$ = SubStr$(data$,-2," ")
y3! = @Val(data2$)
data2$ = SubStr$(data$,-1," ")
z3! = @Val(data2$)
oGL("glNormal3f",x3!,y3!,z3!)
oGL("glTexCoord2f",x2!,y2!)
oGL("glVertex3f",x1!,y1!,z1!)
------------------------------------------------/span>-----
rückgabe& = oGL("glEnd")
ENDPROC
|
| | | | |
| | |
Vertex Daten per Linien, Dreiecke , Vierecke und Polygone und das kann man soweit ich das sehe nicht in un einzige XPGL File pressen .
Das umändern potuto der Programmiervater der XPGL übernehmen, das man mehrere verschiedene Körper einlesen kann. Dürfte per ihn eine leichtigkeit , wäre irgendwann doch mal erforderlich gewesen dieses zu ändern.
mfg |
| | | | |
| | | So wie ich das sehe bietet XPGL bereits diese Möglichkeiten. XPGL-Erfahrungen habe ich keine. |
| | | | |
| | | Also bei Xprofan10 geht es nicht. Man kann zwar mehrere verschiedene Körper reinbringen, mit Namen, angezeitg wird immer nur der 1.
mfg |
| | | | |
| | | ...was vielleicht daran liegt das die Daten zu einer ogl.list "kompiliert" werden. |
| | | | |
| | | Das Programm Wings3d per die Obj-File mit Texturenerstellung gibt es jetzt in deutsch.
mfg peter |
| | | | |
| | | | | | | |
| | Frank Abbing | @&(N) N : Integer (0 ... 15)
Ergebnis: LongInt
Der N-te übergebene Parameter in einer selbstdefinierten Funktion (oder Prozedur) als LongInt.
Der 0. Parameter ist nach Aufruf einer Prozedur/Methode der mit Return <Wert> zurückgegebene Wert. |
| | | | |
| | Dieter Zornow | Der Ausdruck ist aber falsch, ich nehme mal an, dass laden_obj eine Procedure ist und die wird hier als Funktion aufgerufen. Dann muss es korrekterweise KompilierenMarkierenSeparieren heißen, sonst geht der Aufruf schief |
| | | Er ist ein Mann wie ein Baum. Sie nennen ihn Bonsai., Win 7 32 bit und Win 7 64 bit, mit XProfan X2 | 05.09.2008 ▲ |
| |
| | | Also funktionieren tun sie alle! Komisch....
Aber trotzdem vielen dank.
mfg |
| | | | |
|
AnswerTopic-Options | 60.522 Views |
ThemeninformationenDieses Thema hat 7 subscriber: |