Seite 1 von 1

Fragen zur Grafikengine (3D)

Verfasst: 26.11.2004 10:09
von Kukulkan
Hallo zusammen,

Ich wollte mich mal just for fun ein bisschen mit der 3D-Engine von PB beschäftigen. Dabei sind mir einige Fragen aufgegangen:

- PB nutzt OGRE. Ich möchte alle Modelle mit Cinema4D erstellen und kann damit als 3D Max, Direct 3D, DXF, Quickdraw, Shockwave, VRML 1/2, und Wavefront exportieren. Ich finde auf der OGRE-Seite kein AddIn oder Konverter für Cinema. Wie kann ich die Objekte zu Meshes machen ohne weiter investieren zu müssen? Ich habe Konverter gefunden, aber .mesh (ogre) scheint ein sehr exotisches Format zu sein. Wurde da auf die falsche Engine gesetzt?

- Auf der OGRE-Seite sind Screenshots mit tollen Schatten, Effekten, Partikeln etc. zu sehen. Es ist mir nicht gelungen die Befehle dafür zu finden. Lensflares wären auch toll. Habt Ihr einen Tipp wie das mit PB geht?

- Eine Lichtquelle strahlt bei mir zwar Licht, ist aber unsichtbar. Habe ich was falsch verstanden oder müsste diese nicht sichtbar sein oder zumindest einen Switch dafür haben? Muss ich die Lichtquellen als Sprite selber einfügen um Sie sichtbar zu machen?

- Ich hab am Terrain-Example von PB gespielt. Seltsam: Ich mache AmbientColor(RGB(10,10,10)) um eine dunkle Athmosphäre zu schaffen. Wenn ich jetzt den SkyDome auskommentiere, wird plötzlich alles wieder Hell als scheinte voll die Sonne. Da ich mit Fog später auch den Himmel ausblenden möchte, benötige ich keinen Sky. Ich kapiers nicht.

- Wenn ich eine Lichtquelle setze, ist die immer so stark, dass die gesamte Szene beleuchtet wird (auch bei geringen Farbwerten wie zB RGB(50,50,50)). Die Lichtquellen haben demnach keine Abnahme auf die Entfernung. Wie kann ich das erreichen (zB lokale Taschenlampe oder Strassenlaterne).

Sorry für die vielen Fragen aber ich brauche wohl etwas Hilfe.

Volker

Verfasst: 26.11.2004 10:14
von Kukulkan
Hah!

Die Partikelfrage ist geklärt. War wohl zu blöd um die PB-Befehle dafür zu sehen. Die anderen Fragen sind aber noch aktuell!

Sorry,

Volker

Re: Fragen zur Grafikengine (3D)

Verfasst: 27.11.2004 16:14
von traumatic
First of all, hello german forum!
Well, I finally brought myself to register... :)

- PB nutzt OGRE. Ich möchte alle Modelle mit Cinema4D erstellen und kann damit als 3D Max, Direct 3D, DXF, Quickdraw, Shockwave, VRML 1/2, und Wavefront exportieren. Ich finde auf der OGRE-Seite kein AddIn oder Konverter für Cinema. Wie kann ich die Objekte zu Meshes machen ohne weiter investieren zu müssen? Ich habe Konverter gefunden, aber .mesh (ogre) scheint ein sehr exotisches Format zu sein. Wurde da auf die falsche Engine gesetzt?
Exotisch würde ich das OGRE-Format nicht gerade nennen, es ist aus
Programmierersicht durchaus üblich, ein eigenes Format zu schreiben,
welches speziell auf die Engine und dessen Features zugeschnitten ist.

Du hast aber recht, mit deinen Meshes direkt aus Cinema kannst du
natürlich nur wenig anfangen.
Es werden auf der OGRE-Seite einige Konverter-Tools zum Download
angeboten, die von Cinema als Export zur Verfügung gestellten Formate
werden aber leider nicht abgedeckt.

Die wohl kostengünstigste Möglichkeit wäre die Anschaffung von Milkshape3D,
vieleicht kann aber auch Blender (OpenSource) irgendwelche
Standard-Formate (.3ds, .obj etc.) importieren, so dass Du von
hieraus Deine Meshes erneut abspeicherst und dann entsprechend
konvertierst. Einen Blender->Ogre-Konverter gibt es ja.


Es steht Dir selbstverständlich frei, eigene Loader zu schreiben
(siehe auch Beispiel von Danilo: http://purebasic.myforums.net/viewtopic.php?t=10893).

Empfehlen würde ich Dir für den Anfang das Wavefront-OBJ-Format.
Das sind Plain-Ascii-Dateien, Du kannst also jederzeit Deine ermittelten
Werte überprüfen.

- Eine Lichtquelle strahlt bei mir zwar Licht, ist aber unsichtbar. Habe ich was falsch verstanden oder müsste diese nicht sichtbar sein oder zumindest einen Switch dafür haben? Muss ich die Lichtquellen als Sprite selber einfügen um Sie sichtbar zu machen?
Licht ist nie sichtbar, weder in den bekannten Pipelines (OpenGL, DirectX)
noch in irgendeiner Engine, zumindest ist mir eine solche nicht bekannt.
Selbst in Cinema ist Licht erstmal nicht sichtbar.

IMHO würde das aber auch wirklich keinen Sinn machen, "sichtbares Licht"
faked man - wie Du selbst schon sagst - mit Sprites, Billboards etc.

Additives Blending wirkt hier Wunder! ;)
- Wenn ich eine Lichtquelle setze, ist die immer so stark, dass die gesamte Szene beleuchtet wird (auch bei geringen Farbwerten wie zB RGB(50,50,50)). Die Lichtquellen haben demnach keine Abnahme auf die Entfernung. Wie kann ich das erreichen (zB lokale Taschenlampe oder Strassenlaterne).
Vielleicht täusche ich mich - ich habe null Erfahrung mit OGRE - ein
kurzer Blick in's Manual sagt mir aber, dass PB-OGRE nur direktionale
Lichtquellen anbietet, da für Spotlights (wie Du sie willst) die Parameter
zur Ausrichtung fehlen.

Ich würde also behaupten, es geht nicht, zumindest nicht zur Zeit.

Verfasst: 27.11.2004 18:41
von Robert Wünsche
Ich hab doch auch mal einen exporter für cinema 4d gebaut.
Schau dich nur mal um ! :wink:

Verfasst: 27.11.2004 18:49
von Kaeru Gaman
wenn ich mich nicht täusche, kann blender C4D import, bin mir aber nicht sicher.

das beispiel von Robert W. ist bestimmt auch testenswert.

@traumatic:

ganz besonders würde mich persönlich der punkt mit dem ambient interessieren, den du nicht angesprochen hast.

muss denn ein Sky-object vorhanden sein, damit ambient korrekt arbeitet?

Verfasst: 27.11.2004 20:25
von traumatic
Kaeru Gaman hat geschrieben:@traumatic:

ganz besonders würde mich persönlich der punkt mit dem ambient interessieren, den du nicht angesprochen hast.

muss denn ein Sky-object vorhanden sein, damit ambient korrekt arbeitet?
Ja und wieso fragst Du da mich? ;)

Ich habe gerade mal spaßeshalber "Billboard.pb" aus dem Examples-Ordner
angestartet und AmbientColor() hinzugefügt. Der Effekt war genau der,
den ich vermutete, also würde ich sagen:

"Nein, natürlich wird keine Skybox benötigt."

Keine Ahnung, vielleicht gibt's ja den ein oder anderen Bug durch die Kombination
mit anderen Befehlen o.ä. - mangels OGRE-Erfahrung vermag ich das jedoch nicht näher
zu ergründen.

Prinzipiell wird AmbientColor() im Hintergrund wahrscheinlich einfach folgendes machen:

d3dDevice\SetRenderState(#D3DRS_AMBIENT, [übergebener ARGB-farbwert])

- von daher dürfte/sollte das in jeder Situation funktionieren...

Verfasst: 28.11.2004 02:00
von Kaeru Gaman
yo, thnx ersma.

ich dachte nur, weil du so ne gute antwort parat hattest, du wüstest auch auf die anderen fragen vielleicht welche :wink:

sorry

Verfasst: 28.11.2004 02:14
von traumatic
Kaeru Gaman hat geschrieben: sorry
So wie ich das Konzept eines Forums verstanden habe,
muss man sich für Fragen nicht entschuldigen... :wink:


Naja, zumindest sehr selten :lol: