Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

3D Programm + FreeBasic/OpenGL

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 562
Wohnort: Jüterbog

BeitragVerfasst am: 01.10.2008, 22:36    Titel: 3D Programm + FreeBasic/OpenGL Antworten mit Zitat

Beim Experimentieren mit Blender(3D-Modeller) und Yafray(Raytracer) ist mir mal folgendes aufgefallen:
Wenn man als Renderer in Blender Yafray benutzt und eine 3D Szene berechnen lässt erzeugt eines der beiden
Programme neben dem Bild(.tga) auch eine .xml Datei, welche die Szene beschreibt....

hier mal ein Beispiel:

- <scene>
- <shader type="blendershader" name="MAMaterial">
- <attributes>
<color r="0.800000" g="0.800000" b="0.800000" />
<specular_color r="1.000000" g="1.000000" b="1.000000" />
<mirror_color r="1.000000" g="1.000000" b="1.000000" />
<diffuse_reflect value="0.800000" />
<specular_amount value="0.500000" />
<alpha value="1.000000" />
<emit value="0.000000" />
<matmodes value="traceable shadow" />
<diffuse_brdf value="lambert" />
<specular_brdf value="blender_cooktorr" />
<hard value="50" />
</attributes>
</shader>
- <transform m00="1.000000" m01="0.000000" m02="0.000000" m03="0.000000" m10="0.000000" m11="1.000000" m12="0.000000" m13="0.000000" m20="0.000000" m21="0.000000" m22="1.000000" m23="0.000000" m30="0.000000" m31="0.000000" m32="0.000000" m33="1.000000">
- <object name="OBCube" shadow="on" shader_name="MAMaterial">
<attributes />
- <mesh autosmooth="0.1" has_orco="off">
- <points>
<p x="1.000000" y="1.000000" z="-1.000000" />
<p x="1.000000" y="-1.000000" z="-1.000000" />
<p x="-1.000000" y="-1.000000" z="-1.000000" />
<p x="-0.999999" y="1.000000" z="-1.000000" />
<p x="1.000000" y="1.000000" z="0.999999" />
<p x="-1.000000" y="1.000000" z="1.000000" />
<p x="-1.000000" y="-1.000000" z="1.000000" />
<p x="0.999999" y="-1.000000" z="1.000000" />
</points>
- <faces>
<f a="0" b="1" c="2" shader_name="MAMaterial" />
<f a="2" b="3" c="0" shader_name="MAMaterial" />
<f a="4" b="5" c="6" shader_name="MAMaterial" />
<f a="6" b="7" c="4" shader_name="MAMaterial" />
<f a="0" b="4" c="7" shader_name="MAMaterial" />
<f a="7" b="1" c="0" shader_name="MAMaterial" />
<f a="1" b="7" c="6" shader_name="MAMaterial" />
<f a="6" b="2" c="1" shader_name="MAMaterial" />
<f a="2" b="6" c="5" shader_name="MAMaterial" />
<f a="5" b="3" c="2" shader_name="MAMaterial" />
<f a="4" b="0" c="3" shader_name="MAMaterial" />
<f a="3" b="5" c="4" shader_name="MAMaterial" />
</faces>
</mesh>
</object>
</transform>
- <light type="pointlight" glow_intensity="0.000000" glow_offset="0.000000" glow_type="0" name="LAMP1" power="29.999983" cast_shadows="on">
<from x="4.076245" y="1.005454" z="5.903862" />
<color r="1.000000" g="1.000000" b="1.000000" />
</light>
- <background type="constant" name="world_background">
<color r="0.056563" g="0.220815" b="0.400000" />
</background>
- <camera name="MAINCAM" type="perspective" resx="800" resy="600" focal="1.093750" aspect_ratio="1.000000" dof_distance="0.000000" aperture="0.000000" use_qmc="on" bokeh_type="disk1" bokeh_bias="uniform" bokeh_rotation="0.000000">
<from x="7.481132" y="-6.507640" z="5.343665" />
<to x="6.826270" y="-5.896974" z="4.898420" />
<up x="7.163762" y="-6.195171" z="6.239008" />
</camera>
- <render camera_name="MAINCAM" raydepth="5" gamma="1.000000" exposure="0.000000" AA_passes="2" AA_minsamples="4" AA_pixelwidth="1.5" AA_threshold="0.05" bias="0.001000" clamp_rgb="on" background_name="world_background">
<outfile value="C:\Users\Muttonhead\Blender Bilder\\YBtest.tga" />
</render>
</scene>


ist einfach nur nen Würfel - die Standard-Szene in Blender.

aber die Points und Faces sind doch recht aussagekräftig!!!
(die Faces sind Dreiecke??)


Ich bin ja nun mal grad dabei, mir FreeBasic beizubiegen, und von OpenGL noch meilenweit entfernt, aber
diese .xml ... nunja die enthält doch alle Infos die man in OpenGL braucht oder ???
.... nur mal nen Gedanke, und warscheinlich extrem blöde

Mutton
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
28398



Anmeldungsdatum: 25.04.2008
Beiträge: 1917

BeitragVerfasst am: 02.10.2008, 15:19    Titel: Antworten mit Zitat

Für XML kann ich nur FBEXT empfehlen:
http://www.freebasic.net/forum/viewtopic.php?t=9791&start=0

Ich habe nur kurz drübergeschaut, aber ja, dass sollten zumindest alle Vertexinformationen sein...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Eastler_dart



Anmeldungsdatum: 24.09.2005
Beiträge: 177
Wohnort: Baden-Würtemberg + Sachsen

BeitragVerfasst am: 03.10.2008, 12:24    Titel: Antworten mit Zitat

hallo Alle, hallo Muttonhead,

ja, die Daten sind informativ, aber es geht noch deutlicher.
Bin aber jetzt nicht in der Lage, Blender zu starten, bei Anim8tor gehts aber bestimmt. Speichere mal deinen Würfel als OBJ Datei, bei Anim8tor wäre es Objekt Export "als Obj.Datei".
Diese Objekt-datei ist eine reine Text-Datei, die z.B. so aussehen kann:
Code:
# Created with Anim8or 0.95
# Object "object01":
# ComRec:
g mesh01
# No. points 8:
v -25.1149 2.41321 -9.38454
v -6.34579 2.41321 -9.38454
v -6.34579 2.41321 9.38455
v -25.1149 2.41321 9.38455
v -25.1149 21.1823 -9.38454
v -6.34579 21.1823 -9.38454
v -6.34579 21.1823 9.38455
v -25.1149 21.1823 9.38455

# No. normals 30:
vn 0 0 -1
vn 0 0 1
vn 1 0 0
vn 0 1 0
vn -1 0 0
vn 0 -1 0
vn 0 0 -1
vn 0 -1 0
vn -1 0 0
vn 0 0 -1
vn 0 -1 0
vn 1 0 0
vn 0 0 1
vn 0 -1 0
vn 1 0 0
vn 0 0 1
vn 0 -1 0
vn -1 0 0
vn 0 0 -1
vn -1 0 0
vn 0 1 0
vn 0 0 -1
vn 0 1 0
vn 1 0 0
vn 0 0 1
vn 0 1 0
vn 1 0 0
vn 0 0 1
vn -1 0 0
vn 0 1 0

# No. texture coordinates 8:
vt 0 0
vt 1 0
vt 1 1
vt 0 1
vt 1 0
vt 0 0
vt 0 1
vt 1 1

# No. faces 6:
f 5/4/19 6/3/22 2/2/10 1/1/7
f 7/8/25 8/7/28 4/6/16 3/5/13
f 6/3/24 7/8/27 3/5/15 2/2/12
f 8/7/30 7/8/26 6/3/23 5/4/21
f 4/6/18 8/7/29 5/4/20 1/1/9
f 2/2/11 3/5/14 4/6/17 1/1/8


Hier wird jeder datentyp (vertex etc) mit # No. **** als Titel und darin die Anzahl der Datenzeilen aufgelistet zwinkern

Hab schon probiert, diese Daten (für eine menschliche Figur) in Excel einzulesen, per "Text-in-Spalten aufteilen" in die einzelnen Werte zu zerlegen, mittels eingefügten Spalten die notwendigen FreeBasic- und openGL-Befehle dazwischen zu schreiben und hinterher wieder zusammenbasteln als Befehlszeilen.
Das läuft, die Figur hat mir dann OpenGL unter FreeBasic einwandfrei angezeigt.

Bedeutet: die manuelle Umsetzung über Excel hat mir gezeigt, mit den Daten (wer hätte das wohl gedacht?) kann man direkt arbeiten.

Wenn ich wiedermal mehr Zeit hab, versuche ich eine Einleseroutine für Obj-Dateien zu schreiben.

Wenn der Quellcode für die "menschliche Figur", den ich manuell aus der Obj-Datei gebastelt hatte, nicht um die eintausend Zeilen hätte, würde ich den ja hier einfügen, aber das ist bestimmt zu lang zwinkern

Hoffe es bringt Ideen

Eastler
_________________
Kaum macht mans richtig, schon geht's
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen Yahoo Messenger
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 562
Wohnort: Jüterbog

BeitragVerfasst am: 03.10.2008, 15:36    Titel: Antworten mit Zitat

Tach ooch Eastler ...wie's aussieht, kann Blender ".obj" weder lesen noch schreiben. Wer hätte das gedacht... na egal, werd ich mich mal auf die .xml stürzen. grinsen

.. halt, ich muss mich verbessern... es gibt nen PythonScript für Im und Ex von und nach .obj

Mutton
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 562
Wohnort: Jüterbog

BeitragVerfasst am: 04.10.2008, 11:08    Titel: Antworten mit Zitat

Hmmmmm... es sieht ähnlich aus, von gleich will ich jetzt nicht sprechen:


Code:
# Wavefront OBJ (1.0) exported by lynx's OBJ import/export script

# Meshname:   Cube
# Total number of Faces:   6
# Total number of Vertices:   8

o Cube

g Cube

v 1.0 0.999999940395 -1.0
v 1.0 -1.0 -1.0
v -1.00000011921 -0.999999821186 -1.0
v -0.999999642372 1.00000035763 -1.0
v 1.00000047684 0.999999463558 1.0
v 0.999999344349 -1.00000059605 1.0
v -1.00000035763 -0.999999642372 1.0
v -0.999999940395 1.0 1.0
vn 0.577349185944 0.577349185944 -0.577349185944
vn 0.577349185944 -0.577349185944 -0.577349185944
vn -0.577349185944 -0.577349185944 -0.577349185944
vn -0.577349185944 0.577349185944 -0.577349185944
vn 0.577349185944 0.577349185944 0.577349185944
vn 0.577349185944 -0.577349185944 0.577349185944
vn -0.577349185944 -0.577349185944 0.577349185944
vn -0.577349185944 0.577349185944 0.577349185944
f 1//1 2//2 3//3 4//4
f 5//5 8//8 7//7 6//6
f 1//1 5//5 6//6 2//2
f 2//2 6//6 7//7 3//3
f 3//3 7//7 8//8 4//4
f 5//5 1//1 4//4 8//8



Mutton
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Eastler_dart



Anmeldungsdatum: 24.09.2005
Beiträge: 177
Wohnort: Baden-Würtemberg + Sachsen

BeitragVerfasst am: 05.10.2008, 00:18    Titel: Antworten mit Zitat

hallo Alle, hallo Muttonhead

ja, die spezifikationen des Obj.Formates werden scheinbar unterschiedlich ausgelegt.

in deiner Liste gibt es z.B die Zeile
# Total number of Vertices: 8
welche besagen, die Datei enthält u.a. 8 Vertices-Zeilen,
das sind die Zeilen, die mit v beginnen und 3D-Punkte beschreiben.

Dann gibts noch Texturangaben, solche Zeilen würden mit
vt beginnen, du hast keine drin, also keine Textur verwendet.

Mit vn beginnen Zeilen, in welchen die "Normalen"-Werte
enthalten. Das sind die Angaben, welche OpenGL zu einem
Objekt (Triangle, Quad....) angeben, welche Seite nach
"außen" im Gesamtgebilde zeigen.
In deiner Datei wundert mich nun, daß bezüglich dieser
vn-Zeilen keine Angabe drin ist, wieviele solcher Zeilen
in der Datei vorhanden sind.
In "meiner" Datei gibts dafür die Zeile:
# No. normals 30:
danach 30 Zeilen mit noramls-Werte

Als letztes die Zeilen, welche mit "f" beginnen, also "faces" enthalten.
Dabei wird zugrunde gelegt, daß man die Werte aus den Vertex-Zeilen,
den Normalen-Zeilen und den Textur-Zeilen jeweils in ein Array haut.
Die Faces-Werte sind dann die Index-Nummern innerhalb dieser Arrays.

Die Array-Geschichte kann man aber nicht mit 3 Sätzen erklären, das dauert ein paar Zeilen länger.
Also nich ganz soooo einfach.
Dies soll mal ein Tutorial-Thema werden, jedoch müßte ich davor die Normalen zuerst erklären.
Im Moment sitz ich aber am Schriften-Tutorial.


Die Angaben zur Obj-Datei hatte ich auf einer Internetseite gefunden,
finde aber den Link grad nicht.
Und die Dateien hier anzuzeigen könnte Probleme mit dem Urheber machen.

Wenn ich den Link wiederfinde, schreib ich den hier rein.


hoffe es regt Gedanken an,

Eastler
_________________
Kaum macht mans richtig, schon geht's
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen Yahoo Messenger
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Bibliotheken Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz