Main Menu

Publikationsproblem....

Started by dieter1a, February 24, 2007, 12:39:27 PM

Previous topic - Next topic

dieter1a

Hallo und guten Tag.
Ich bin seit heute neu in diesem Forum und möchte kurz umreißen, warum.
Ich bin leidenschaftlicher Blender 3D Anwender mit Schwerpunkt 3D im Web.
Blender bietet nur eine eizige Möglichkeit Interaktivität im 3D Raum auf Webseiten zu präsentieren.
Das ist ein ActiveX was nur mit der etwas älteren Blender-Version 2.25 funktioniert und auch nur im Internet Explorer.
Man kann damit problemlos aus dem 3D-Raum das Web kontaktieren und via JavaScript von der HTML-Seite über ein Form dem 3D-Raum Befehle übermitteln.
Da zu allem Unglück der neue IE 7 keine Kommunikation aus dem 3D-Raum mit dem Web mehr ermöglicht, bin ich sehr in Sorge.
Auf meiner Site http://www.3dpowertower.de lässt sich das sehr schön nachvollziehen.
Das Thema Blender to Java beschäftigt mich seitdem immer mehr.
Im deutschen Blender-Forum zeigt der Beitrag von Tonikov ganz unten auf der ersten Seite http://blendpolis.serverpool.org/f/viewtopic.php?t=12477&postdays=0&postorder=asc&start=0
Denkanstöße zur Lösung des Problems eventuell als Java-Applet eventuell mit jPCT.

Meine Frage richtet sich zunächst an den Admin EgonOlsen.
Blender ist open source.
Ein Exporter nach 3ds ist vorhanden.
Siehst Du Wege an eine Einbindung von Blender in jPCT zu kommen?

Vielen Dank

MfG dieter1a

EgonOlsen

Also im Prinzip könnte man das natürlich bauen...die Frage ist bloß was unterstützt werden soll und wer es baut...also jPCT kann neben 3ds in der neuen Version auch OBJ. Das ist eigentlich wegen Blender dazu gekommen, weil es Probleme mit dem Export aus Blender in 3ds gab, der zwar theoretisch möglich ist, praktisch aber unzureichend war.
Also damit bekäme man die Modelle heraus. Allerdings nur Polygone, keine Splines oder ähnliches. Das unterstützt jPCT sowieso nicht. Lichtquellen und anderes (ich weiß jetzt nicht, was Blender da noch so anbietet) müsste man irgendwie anders rüberschaufeln. Es gibt auch ein XML-Format für den Import, welches immerhin Lichtquellen unterstützt. Es ist allerdings recht alt, d.h. es reflektiert nicht unbedingt alles das wieder, was mittlerweile mit jPCT möglich ist. Evtl. ist es aber ein Ansatz, auf dem man aufbauen könnte. Eine DTD dazu gibt es auch irgendwo, ein Beispiel hier (Achtung, es ist recht groß.  Im Firefox braucht das Öffnen seine Zeit): http://www.jpct.net/download/world.xml
Bleibt aber immer noch die Frage, was genau gehen soll. Blenderseitig nach XML oder sonstwas zu exportieren scheint ja möglich zu sein. Ein einfaches Java-jPCT-Gerüst, welches den Export dann wieder einliest und analog zu dem Turm-Beispiel darstellt, das geht sicher auch flott zu erstellen. Bei Spezialdingen wie Triggern oder sonstigem müsste man aber wohl Hand an den Java-Code legen, um das zu ergänzen.

dieter1a

Leider bekomme ich beim Klick auf den Link nur den Code.


       Mit dieser XML-Datei sind anscheinend keine Style-Informationen verknüpft. Nachfolgend wird die Baum-Ansicht des Dokuments angezeigt.

dieter1a

@ EgonOlsen

Danke zunächst für Deine Antwort auf meine Anfrage.

(Zitieren geht hier wohl nicht)
EgonOlsen hat geschrieben:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Bleibt aber immer noch die Frage, was genau gehen soll
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Nun, ich kann an dieser Stelle nur meine eigenen Belange erwähnen.
Das was die Game Engine produziert, sollte im Browser laufen.
Für meine Anforderungen, ohne Licht und so weiter.
Polygone, Texturen, Alpha, Sound, Zugriff auf JavaScript via Python aus der der GE heraus um externe Sites aufzurufen, die in einem neuen Window geöffnet werden und wenn möglich über ein Form Befehlübergabe an die GE (Python).
(geht aber meines Wissens aus einem Applet heraus auch ohne JavaScript)
Interaktivität über Maus und Tastatur.

EgonOlsen hat geschrieben:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Bei Spezialdingen wie Triggern oder sonstigem......
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Was Du mit Triggern meinst kann ich im Moment nicht nachvollziehen.
Hoffentlich stellt sich das nicht als das größte Problem dar.

Du hast mir Mut gemacht und wenn sowas gehen sollte, frische ich halt mein Java auf und code das selber mit hoffentlich Deinen fachmännischen Ratschlägen.

Meine Javakenntnisse habe ich, glaube ich, mit Version 1.3 erlernt.

Sehr nett, daß Du Dich zu dem Problem geäußert hast.

Mit freundlichen Grüßen ein optimistischer

dieter1a

Ach so,
wird man aus diesem Forum nicht per mail informiert wenn jemand zu einem Thema geschrieben hat?

tonikov

Hallo EgonOlson!

Ich bin der Typ, der Dir vor ein paar Tagen ein längeres Email zu diesem Thema geschickt hat. Ich habe mit dieser Idee anscheinend auch andere Blender-Heads angesteckt, was ja glaube ich nichts schlechtes ist.

Ganz toll wäre es, wenn ein Exporter folgendes in Blender berücksichtigt:

- Modelle
- UV-Textur (mit Transparenz)
- Kameras
- Lampen
- IPO-Animationen
- Armaturen/Bones
- Scenes
- ...

In der Ideal-Version würde dieser Exporter auch alle Funktionen der LogicBricks nach jPCT integrieren. Das Traumziel wäre ein vollständiger Ersatz der Blender GameEngine durch jPCT.

Ich stell mir das mal als Amateur-Programmierer vor:

Erstellen ganzer Szenen in Blender, fertig texturiert, beleuchtet, Menü-System u.s.w. Dann wird die Interaktivität und Physik in Blender GameEngine mit den praktischen LogicBricks und Python-Skripten erstellt. Alles fix und fertig. Dann kommt das Export-Skript Blender2jPCT und erstellt daraus eine oder mehrere Java-Klassen.

Diese werden in eine Java-IDE geladen. Dort wird das Game kompiliert oder vorher noch mit der jPCT-API verbessert und um Funktionen erweitert, welche die Blender GameEngine nicht bieten kann (und wahrscheinlich auch nie bieten wird). Kompilieren und fertig.

Ich kann mir gut vorstellen, daß das ein riesen Brocken Arbeit ist. Aber bei diesen Leuten wäre derjenige, der das zustandebringt, der absolute Hero:

http://blendpolis.serverpool.org/f/viewforum.php?f=15

http://blenderartists.org/forum/forumdisplay.php?f=12


LG,
Toni

dieter1a

dieter1a hat geschrieben:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Ach so,
wird man aus diesem Forum nicht per mail informiert wenn jemand zu einem Thema geschrieben hat?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Die Meldungen sind im Spam-Ordner gelandet.

EgonOlsen

Zitieren geht mit "quote". Entweder direkt beim Antworten  (quote statt reply) oder beim Erstellen der Antwort oben aus den möglichen Tags auswählen.

Was ich überhaupt nicht einordnen kann in dem Ganzen, ist die Rolle von Phyton!? Wo soll das verwendet werden? Und wozu? Javascript und ein Applet ...ok...aber da ist nirgends Phyton... :?:
Und Phyton in Java als Skriptsprache einbinden, die dann Code ausführt, der eigentlich in Blender laufen sollte...das kommt mir doch extremst merkwürdig vor. Ist das gemeint?

dieter1a

Entschuldigung, aber die Zusammenhänge von:
was muß implementiert werden und wie wird erzeugt was implementiert werden soll sind mir im Moment nicht klar.

Die Prog-Sprache der Blender GE ist Python.
Und im Moment greife ich via Python auf JavaScript zu.
Das gibt das ActiveX vor.
Anders gehts im Moment nicht.

tonikov kann Dir das mit Sicherheit besser erklären.
Wird er wohl auch gleich machen, wenn die Post nicht im Spam-Ordner gelandet ist ?????[/quote]

tonikov

Quote from: "EgonOlsen"Was ich überhaupt nicht einordnen kann in dem Ganzen, ist die Rolle von Phyton!? Wo soll das verwendet werden? Und wozu? Javascript und ein Applet ...ok...aber da ist nirgends Phyton... :?:

Na gut, ich versuch das mal zu entwirren, obwohl ich auch kein gestandener Informatiker bin.

Interaktionen werden in der Blender GE folgendermaßen programmiert:

Man verknüpft die in einer Blender-Szene die Objekte mit so genannten LogicBricks. Dabei gibt es die

    - Sensoren: die warten auch Ereignisse wie Mausklick, Tastatur, Messages, Collisions, Near-Ereignisse und solches Zeug. Diese werden an die
    - Controllers weitergeleitet, welche eine logische Überprüfung durchführen, oder aber auch ein in das Blender-File eingebettetes Python-Skript aufrufen. In diesem Python-Skript können dann auch komplexere Dinge gemacht werden. Eine Weiterleitung an ein Python-Skript ist aber nicht zwingend notwendig, es können auch unglaublich viele Dinge mittels LogicBricks gemacht werden. Wenn das Signal am Ausgang der Controller TRUE ist, erfolgt ein Weiterleitung an einen oder mehrere
    - Actuators. Hier wird dann die eigentliche Aktion ausgelöst. Hier eine grobe Auflistung von möglichen Aktionen: Bewegungs/Rotationsanweisungen, Laden einer neuen Szene, Spiel Pausieren, Sound abspielen, Zufallswert generieren, eine Variable mit einem Wert füllen, eine Message an ein anderes Game-Objekt schicken, u.s.w....

Wie man diese LogicBricks in eine Java-Klasse bringt weiss ich nicht, dafür reichen meine Fachkenntnisse bei weitem nicht. Auch wird es zwingend notwendig sein, sich im Sourcecode von Blender auszukennen. Um die Funktionalitäten des Python-Skripts in die Java-Klasse zu bringen ist höchst wahrscheinlich ein Wrapper oder Interpreter (ich glaube so heißt das) notwendig.


QuoteUnd Phyton in Java als Skriptsprache einbinden, die dann Code ausführt, der eigentlich in Blender laufen sollte...das kommt mir doch extremst merkwürdig vor. Ist das gemeint?

Was dieter1a  mit

"Und im Moment greife ich via Python auf JavaScript zu.
Das gibt das ActiveX vor. "

meint, ist , daß es möglich ist entweder über die LogicBricks oder über das eingebundene Python-Skript mit dem Browser, in dem das ActiveX-Plugin läuft, zu kommunizieren. Z.B. lässt sich aus dem ActiveX-Plugin heraus eine andere Website in einem neuen Fenster aufrufen.

Die Blender GE kann aber auch direkt aus Blender heraus ausführbare Exe-Anwendungen erstellen. Oder auch app-Anwendungen für Mac. Oder ausführbare Anwendungen für Linux. Ist alles in Blender schon inkludiert (Wobei ich nicht weiß, wie gut das auf dem Mac oder auf Linux funktioniert). Hier ist dann aber keine Kommunikation mit einer anderen Anwendung möglich.

Hoffe jetzt ist einiges klarer, wenn Du mehr Informationen brauchst kann ich Dir Links zu Dokumentationen u.s.w. schicken.

LG,
Toni

tonikov

Quote from: "dieter1a"Die Prog-Sprache der Blender GE ist Python.

Die GE in Blender wurde mit C++ programmiert. Python wird verwendet für:

- Skripting für die GE
- das Scripting für verschiedene Aufgaben in Blender selbst wie zB. UV-Mapping, Objektmanipulationen, Texturgenerierung, ...

dieter1a

EgonOlsen hat gesagt:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Zitieren geht mit "quote". Entweder direkt beim Antworten (quote statt reply) oder beim Erstellen der Antwort oben aus den möglichen Tags auswählen.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Tut mir leid, aber ich sehe nur post/reply unter dem Beitrag. (und natürlich new/topic)

tonikov

Quote from: "dieter1a"Tut mir leid, aber ich sehe nur post/reply unter dem Beitrag. (und natürlich new/topic)

Der Button "quote" ist im Beitrag selbst, rechts oben in der Zeile wo das Datum steht.

dieter1a


EgonOlsen

Ok, ich verstehe...das in dieser Form nach Java rüberzuziehen macht meiner Ansicht nach keinen Sinn. Man müsste erstmal alle Sensoren nachbauen (das ist übrigens das, was ich mit Triggern meinte), die Controller und Actuators ebenfalls und dann müsste man die evtl. vorhandenen Python-Skripte lauffähig bekommen, d.h. man müsste Python als Skriptsprache in Java einbinden. Das geht zwar glaube ich, aber ich weiß nicht wie gut. Vorher müsste man vermutlich die Skripte abändern, da sie ja nichts mehr in der Blender-GE ansteuern sollen, sondern in dem Java-"Nachbau".
Das ist eine gewaltige Aufgabe, die man nicht mal so nebenbei bewältigt. Alternativ könnte man eben einfach die Blender-Modelle laden (soweit jPCT die Features unterstützt) und den Rest in Java Stück für Stück nachbilden. Dazu müsste man sich dann aber von Python verabschieden und auf Java umschwenken, was sicherlich erstmal eine Umstellung sein wird.
Nebenbei möchte ich noch anmerken, dass hardwarebeschleunigte Grafik in einem Applet zwar möglich, aber nicht problemlos ist. Warum ist es eigentlich keine Option, einfach die *.exe anzubieten (so wie es beim Turm ja auch gemacht wurde, denn sonst hätte ich den gar nicht begucken können) und sich von der Darstellung direkt im Browser zu verabschieden?

dieter1a

Quote from: "EgonOlsen"Warum ist es eigentlich keine Option, einfach die *.exe anzubieten (so wie es beim Turm ja auch gemacht wurde, denn sonst hätte ich den gar nicht begucken können) und sich von der Darstellung direkt im Browser zu verabschieden?
Die Online-Version hättest Du Dir im Internet Explorer anschauen können.
In der .exe Version sehe ich keine Möglichkeit aus dem 3D-Raum auf das Internet zugreifen zu können.