24
Der o2c-Constructor ist die konsequente Weiterentwicklung der o2c-Technologie. Mit ihm ist es möglich online o2c-Objekte für dir Darstellung im o2c-Player zu erzeugen. Er kann immer dann eingesetzt werden, wenn individuelle variantenreiche Produkte im Internet konfiguriert oder variable "Kulissen" erzeugt werden sollen. Der o2c-Constructor bietet hier die Möglichkeit der visuellen Kontrolle der Eingabe, bzw. er veranschaulicht dem User, wie Änderungen in der Konfiguration sich auf das Produkt auswirken. Wie funktioniert das? Die Konfiguration im Internet oder innerhalb Ihrer Anwendung wird in der Regel datenbankgestützt mit Hilfe von Formularen durchgeführt. Dahinter stehen dann JavaScript, Java, Basic, C++ oder Delphi-Anwendungen, die die Eingaben überwachen, auf Zulässigkeit prüfen und abhängige Eingaben hinterlegen. Diese Anwendungen können mit Hilfe einfacher Befehle (etwa: "Erzeuge Fläche", "Füge Loch ein", "Lege Textur auf") an den o2c-Constructor auf Basis der Eingabe des Anwenders und in der Anwendung hinterlegter Regeln ein 3D-Modell erzeugen und dies dann im Player darstellen. Der Vorteil: Aufwendige unanschauliche Formulare werden durch die visuelle Kontrolle benutzbar. Fehlbestellungen durch Missverständnisse werden minimiert, Kunden werden dort bestellen, wo der Bestellvorgang intuitiv und einfach ist.Dies minimiert den Zeitaufwand für Ihre User und fördert die Anschaulichkeit Ihrer Anwendung. Wichtige Features: l Erzeugen von Dreiecken und Vierecken. l Erzeugen von Polygonen mit Löchern. l Definition von Material- und Textureigenschaften. l Speichern von Objekten. l Erzeugen von Texturen (z.B. variable Beschriftung). l weitere Funktionen zum Setzen von Parametern. Was ist der o2c-Constructor und was benötige ich? Der o2c-Constructor ist als Netscape-PlugIn und als ActiveX-Control für Microsoft Windows erhältlich. Sie können ihn überall dort einsetzen, wo Sie auch den o2c- Player benutzen. Der Constructor benötigt lediglich eine laufende Instanz des o2c-Players. Detailierte Informationen zur Einbindung in Ihre Entwicklungsumgebung finden Sie in der Rubrik Einbindung . Aufbau dieser Hilfe-Datei: Diese Hilfe gliedert sich in mehrere Abschnitte: Diese Hilfe-Datei wendet sich an alle Programmierer, die den o2c-Constructor verwenden wollen. Daher ist die Objekt - Referenz in C++ und VisualBasic-Notation gehalten. Dessen Befehle und Eigenschaften lassen sich aber ohne grössere Schwierigkeiten in andere Programmiersprachen übersetzen. Die Beispiele sind hingegen in HTML und JavaScript verfasst um die Verwendung des o2c-Constructors direkt in dieser Hilfe-Datei zu verdeutlichen. Last update: 04/10/2011 03:22:36 Da der o2c-Constructor ein ganz normales ActiveX-Control ist können Sie ihn in jeder Umgebung verwenden, die ActiveX-Controls und das Component Object Model (COM) unterstützen. Dies sind u.a. die Entwicklungsumgebungen von Microsoft und Borland sowie von anderen Herstellern. Da COM für sogut wie jede Programmiersprache verfügbar ist, können wir Ihnen hier nur eine Auswahl der gebrächlichsten Umgebungen vorstellen. Zu jeder der hier vorgestellten Sprachen finden Sie ein Beispiel in der Rubrik Beispiele Last update: 04/10/2011 03:22:36 Der o2c-Constructor Einführung Diese Seite Einbinden Einbinden des o2c-Constructors in Ihre Entwicklungsumgebung bzw. Ihre HTML-Seiten Objekt - Referenz Referenz aller Objekte des o2c-Constructors. Beispiele Beispiele zur Verwendung des o2c-Constructors. Einbinden des o2c-Constructors Delphi Verwendung des Plugins mit Borland Delphi. HTML und JavaScript Allgemeine Verwendung des Plugins im Internet und in HTML-Seiten. C++ Verwendung des Plugins in C++. Visual Basic Einbindung des Plugins in VisualBasic Projekte. Einbindung des o2c-Constructors in HTML und JavaScript. Vom Internet in den Browser Je nach verwendetem Internet-Browser funktioniert die Anzeige und Installation der benötigten Software auf dem PC des Besuchers Ihre Idealfall ist die benötigte Software bereits vorhanden, so dass nur die Objekte (und eventuell Texturen, wenn Sie nicht das O2C-Format verwenden) von Ihrer Internetse Damit dieser Download aktiviert wird, muß Ihre HTML-Seite Verweise auf die Objekte enthalten. Leider gibt es zwei unterschiedliche Formate, diese Verweise in HTML zu formulieren: Netscape verwendet einen <EMBED> Tag, in dem ein Dateiformat angegeben ist. Der Browser lädt dann das für dieses Dateiformat zuständige Plug-In und übergibt die Microsoft benutzt einen <OBJECT> Tag, in dem die ID eines ActiveX-Controls angegeben ist, das diesen Eintrag anzeigen kann. Glücklicherweise ist es möglich, die beiden Formulierungen so ineinander zu verschachteln, dass die Anzeige in beiden Browsern funktioniert. Was aber, wenn die Anzeigemodule auf dem PC des Besuchers Ihrer Web-Seite noch nicht installiert sind? Kein Problem - wenn Ihre Web-Seite die nötigen Hinweise a Software (im Download-Bereich der o2c Web Site) enthält, wird die Software mehr oder weniger automatisch installiert. Wiederum unterscheidet sich der Ablauf je nac der Internet Explorer lädt (falls die aktuellen Sicherheitseinstellungen dies nicht verbieten) die Installationsdatei, prüft das in dieser Datei enthaltene Sicherheitszertifika das darin enthaltene ActiveX-Control installiert werden soll. Wenn der Benutzer zustimmt, wird das o2c-Constructor Control dekomprimiert und installiert. Anschließen HTML-Seite fortgesetzt und das Control sofort aktiviert. der Netscape Navigator zeigt statt des Objektes einen Link an: "Klicken Sie hier, um das Plug-In zu installieren". Ein Klick auf den Link springt zur Download-Seite, in Installation gestartet werden kann. Diese lädt das Installationsarchiv herunter, prüft das darin enthaltene Sicherheitszertifikat und fragt den Benutzer, ob er der Installatio Rechte zur Installation einräumen will. Nachdem der Benutzer zugestimmt hat und die Installationsprozedur das Archiv entpackt und das Plug-In installiert hat, schließt angezeigte Download-Seite und sieht in der ursprünglich geöffneten Seite nun statt des Download-Links das PlugIn. Wenn Sie die im folgenden demonstrierten Richtlinien für die Gestaltung der HTML-Seite einhalten, wird der Besucher Ihrer Seite also beim erstmaligen Besuch der Se Page 1 of 24 o2c - Constructor 10/4/2011 file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

The O2C Constructor-Germ

Embed Size (px)

Citation preview

Der o2c-Constructor ist die konsequente Weiterentwicklung der o2c-Technologie. Mit ihm ist es möglich online o2c-Objekte für dir Darstellung im o2c-Player zu erzeugen. Er kann immer dann eingesetzt werden, wenn individuelle variantenreiche Produkte im Internet konfiguriert oder variable "Kulissen" erzeugt werden sollen. Der o2c-Constructor bietet hier die Möglichkeit der visuellen Kontrolle der Eingabe, bzw. er veranschaulicht dem User, wie Änderungen in der Konfiguration sich auf das Produkt auswirken.

Wie funktioniert das? Die Konfiguration im Internet oder innerhalb Ihrer Anwendung wird in der Regel datenbankgestützt mit Hilfe von Formularen durchgeführt. Dahinter stehen dann JavaScript, Java, Basic, C++ oder Delphi-Anwendungen, die die Eingaben überwachen, auf Zulässigkeit prüfen und abhängige Eingaben hinterlegen. Diese Anwendungen können mit Hilfe einfacher Befehle (etwa: "Erzeuge Fläche", "Füge Loch ein", "Lege Textur auf") an den o2c-Constructor auf Basis der Eingabe des Anwenders und in der Anwendung hinterlegter Regeln ein 3D-Modell erzeugen und dies dann im Player darstellen.

Der Vorteil: Aufwendige unanschauliche Formulare werden durch die visuelle Kontrolle benutzbar. Fehlbestellungen durch Missverständnisse werden minimiert, Kunden werden dort bestellen, wo der Bestellvorgang intuitiv und einfach ist.Dies minimiert den Zeitaufwand für Ihre User und fördert die Anschaulichkeit Ihrer Anwendung.

Wichtige Features:

l Erzeugen von Dreiecken und Vierecken. l Erzeugen von Polygonen mit Löchern. l Definition von Material- und Textureigenschaften. l Speichern von Objekten. l Erzeugen von Texturen (z.B. variable Beschriftung). l weitere Funktionen zum Setzen von Parametern.

Was ist der o2c-Constructor und was benötige ich? Der o2c-Constructor ist als Netscape-PlugIn und als ActiveX-Control für Microsoft Windows erhältlich. Sie können ihn überall dort einsetzen, wo Sie auch den o2c-Player benutzen. Der Constructor benötigt lediglich eine laufende Instanz des o2c-Players. Detailierte Informationen zur Einbindung in Ihre Entwicklungsumgebung finden Sie in der Rubrik Einbindung.

Aufbau dieser Hilfe-Datei: Diese Hilfe gliedert sich in mehrere Abschnitte:

Diese Hilfe-Datei wendet sich an alle Programmierer, die den o2c-Constructor verwenden wollen. Daher ist die Objekt-Referenz in C++ und VisualBasic-Notation gehalten. Dessen Befehle und Eigenschaften lassen sich aber ohne grössere Schwierigkeiten in andere Programmiersprachen übersetzen.

Die Beispiele sind hingegen in HTML und JavaScript verfasst um die Verwendung des o2c-Constructors direkt in dieser Hilfe-Datei zu verdeutlichen.

Last update: 04/10/2011 03:22:36

Da der o2c-Constructor ein ganz normales ActiveX-Control ist können Sie ihn in jeder Umgebung verwenden, die ActiveX-Controls und das Component Object Model (COM) unterstützen. Dies sind u.a. die Entwicklungsumgebungen von Microsoft und Borland sowie von anderen Herstellern. Da COM für sogut wie jede Programmiersprache verfügbar ist, können wir Ihnen hier nur eine Auswahl der gebrächlichsten Umgebungen vorstellen. Zu jeder der hier vorgestellten Sprachen finden Sie ein Beispiel in der Rubrik Beispiele

Last update: 04/10/2011 03:22:36

Der o2c-Constructor

Einführung Diese Seite

Einbinden Einbinden des o2c-Constructors in Ihre Entwicklungsumgebung bzw. Ihre HTML-Seiten

Objekt-Referenz Referenz aller Objekte des o2c-Constructors.

Beispiele Beispiele zur Verwendung des o2c-Constructors.

Einbinden des o2c-Constructors

Delphi Verwendung des Plugins mit Borland Delphi.

HTML und JavaScript Allgemeine Verwendung des Plugins im Internet und in HTML-Seiten.

C++ Verwendung des Plugins in C++.

Visual Basic Einbindung des Plugins in VisualBasic Projekte.

Einbindung des o2c-Constructors in HTML und JavaScript.

Vom Internet in den Browser Je nach verwendetem Internet-Browser funktioniert die Anzeige und Installation der benötigten Software auf dem PC des Besuchers Ihrer Seite unterschiedlich. Im Idealfall ist die benötigte Software bereits vorhanden, so dass nur die Objekte (und eventuell Texturen, wenn Sie nicht das O2C-Format verwenden) von Ihrer Internetseite geladen werden müssen. Damit dieser Download aktiviert wird, muß Ihre HTML-Seite Verweise auf die Objekte enthalten.

Leider gibt es zwei unterschiedliche Formate, diese Verweise in HTML zu formulieren:

Netscape verwendet einen <EMBED> Tag, in dem ein Dateiformat angegeben ist. Der Browser lädt dann das für dieses Dateiformat zuständige Plug-In und übergibt die referenzierten Daten.

Microsoft benutzt einen <OBJECT> Tag, in dem die ID eines ActiveX-Controls angegeben ist, das diesen Eintrag anzeigen kann.

Glücklicherweise ist es möglich, die beiden Formulierungen so ineinander zu verschachteln, dass die Anzeige in beiden Browsern funktioniert.

Was aber, wenn die Anzeigemodule auf dem PC des Besuchers Ihrer Web-Seite noch nicht installiert sind? Kein Problem - wenn Ihre Web-Seite die nötigen Hinweise auf eine mögliche Quelle der Software (im Download-Bereich der o2c Web Site) enthält, wird die Software mehr oder weniger automatisch installiert. Wiederum unterscheidet sich der Ablauf je nach verwendetem Browser:

der Internet Explorer lädt (falls die aktuellen Sicherheitseinstellungen dies nicht verbieten) die Installationsdatei, prüft das in dieser Datei enthaltene Sicherheitszertifikat und fragt den Benutzer, ob das darin enthaltene ActiveX-Control installiert werden soll. Wenn der Benutzer zustimmt, wird das o2c-Constructor Control dekomprimiert und installiert. Anschließend wird die Anzeige Ihrer HTML-Seite fortgesetzt und das Control sofort aktiviert.

der Netscape Navigator zeigt statt des Objektes einen Link an: "Klicken Sie hier, um das Plug-In zu installieren". Ein Klick auf den Link springt zur Download-Seite, in der per Mausklick die Installation gestartet werden kann. Diese lädt das Installationsarchiv herunter, prüft das darin enthaltene Sicherheitszertifikat und fragt den Benutzer, ob er der Installationsprozedur hinreichende Rechte zur Installation einräumen will. Nachdem der Benutzer zugestimmt hat und die Installationsprozedur das Archiv entpackt und das Plug-In installiert hat, schließt der Benutzer die immer noch angezeigte Download-Seite und sieht in der ursprünglich geöffneten Seite nun statt des Download-Links das PlugIn.

Wenn Sie die im folgenden demonstrierten Richtlinien für die Gestaltung der HTML-Seite einhalten, wird der Besucher Ihrer Seite also beim erstmaligen Besuch der Seite mit einigen wenigen

Page 1 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

Mausklicks die nötige Software installieren - bei weiteren Besuchen wird er sofort Ihre Seite betrachten können. Leider melden alle gängigen HTML-Editoren keinen Fehler, wenn Sie die benötigten Daten für die automatische Installation nicht angeben - und beim lokalen Testen werden Sie das Problem wahrscheinlich auch nicht bemerken, da das Plug-In bzw. das ActiveXinstalliert ist!

Object- und Embed-Tag verschachteln Um die Darstellung sowohl im Navigator als auch im Internet Explorer zu gewährleisten, verschachteln Sie beim Erstellen Ihrer HTML-Seite einen Object- und einen Embedwir ein Beispiel für diese Verschachtelung zunächst in einzelnen Schritten. Sie können das Gesamtbeispiel (als zusammenhängender HTML-Code sowie in Funktion) weiter unten betrachten.

Der Code beginnt mit einem Abschnitt für den Internet Explorer:

<object classid ="CLSID:06293FDE-E099-48D1-BAF7-7ED9DFFB5513" codebase ="http://www.o2c.de/kremer/area/O2CAreas.CAB#version=1,0,1,13" width = 1 height = 1 name = "theCnstr">

Das hier definierte <object> hat folgende Eigenschaften:

Im Original Microsoft Format könnte der <object> Tag nach den Parametern mit </object> geschlossen werden. Da leider der Netscape Navigator diese Daten ignoriert, müssen Sie noch die Navigator-Variante integrieren. Daher folgt noch vor dem </object> Abschluß der <embed> Tag:

<embed codebase = "http://www.o2c.de/dl_plugin.htm" type = "application/x-o2c-areas" name = "theCnstr" hidden>

Die Laufzeitparameter kennen Sie bereits teilweise. Der unterschiedliche Wert für codebase verweist auf die Download-Seite für die Plug-In-Version des o2c-Constructors. Neu ist lediglich die Angabe type, sie gibt den Datentyp des Plugins an (den sogenannten MIME-Type) und entspricht in etwa der classid Angabe im Microsoft Format. Wie diese ist der Wert für alle Objekte konstant (da das Plug-In genau für diesen MIME-Type registriert wird). Der Wert hidden gibt an, dass das Plugin zur Laufzeit nicht sichtbar ist.

Es folgt noch der Epilog:

</object>

Beispiel als zusammenhängender HTML-Code

<object classid = "CLSID:06293FDE-E099-48D1-BAF7-7ED9DFFB5513" codebase = "http://www.o2c.de/kremer/area/O2CAreas.CAB#version=1,0,1,13" name = "theCnstr" width = "1" height = "1"> <embed codebase = "http://www.o2c.de/dl_plugin.htm" type = "application/x-o2c-areas" name = "theCnstr" hidden> </object>

JavaScript: Auch hier gibt es (wie schon bei der HTML-Einbindung) große Unterschiede zwischen Netscape Navigator und Microsoft Internet Explorer. Es ist aber möglich, eine HTML Seite so zu schreiben, das die gleichen JavaScript Funktionen in beiden Browsern aufgerufen werden (mit vereinzelten Ausnahmen).

Neben der Einbindung ist allerdings auch der JavaScript-Code selbst unterschiedlich. Netscape verwendet eine reine Java Syntax, das Plugin liefert eine Java-Klasse, die von einer allgemeinen Plugin Oberklasse abgeleitet wurde. Es gibt keinen Unterschied zwischen Attributen und Funktionen, alle Zugriffe erfolgen über Funktionsaufrufe (z.B. setAmbientCoefficient(0.0)).

Microsoft hingegen verwendet eine JavaScript-basierte (generische) Einbindung für ActiveX Controls, die Stark an Visual Basic orientiert ist (und darüber hinaus stilistisch in das JavaScript Objektmodell paßt). Funktionen und Eigenschaften werden unterschieden, an Eigenschaften sind Zuweisungen möglich (z.B. AmbientCoefficient = 0.0).

Sie können diese Unterschiede vor großen Teilen Ihrer Scripte verbergen, in dem Sie alle Zugriffe auf Eigenschaften durch eine Setze/Lese-Funktion vornehmen, die als Parameter den o2cConstructor, den Namen der Eigenschaft und (beim Setzen) den neuen Wert übergeben bekommt. Diese Funktion erstellt daraus einen String mit der richtigen Anweisung (abhängig vom verwendeten Browser) und führt diesen mit Hilfe der JavaScript-Funktion eval aus.

Grundlegendes Hilfsmittel für alle folgenden Schritte ist eine Möglichkeit, den Browser des Betrachters zu untersuchen und abhängig vom Ergebnis verschiedenen JavaScriptnach Komplexität des Script-Codes und der benötigten Kompatibilität für alte Browser-Version kann diese Untersuchung aufwändig sein und als Ergebnis zum Beispiel eine Reihe von globalen Variablen setzen (isIE, isIE4plus, ...). Ein Beispiel für eine solche Untersuchung finden Sie in "The Ultimate JavaScript Client Sniffer". In den folgenden Beispielen verwenden wir eine sehr einfache Version dieser Untersuchung, die lediglich zwischen Navigator und Internet Explorer unterscheidet. Der Internetexplorer liefert als navigator.userAgent Texte wie

Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)

während der Navigator Texte wie diesen liefert:

Mozilla/4.7 [de] (WinNT; U)

Eine Funktion, die diesen Text untersucht und true liefert, wenn sie von einem Navigator ausgeführt wird, ist die folgende:

function IsNetscape() { var agt = navigator.userAgent.toLowerCase(); return (agt.indexOf("msie") == -1); }

Wir haben eine JavaScript-Datei, "o2cproxy.js", für Sie erstellt, die diese Aufgabe für Sie erledigt. Diese Datei dient dazu, Aufrufe des o2c-Players und des o2c-Constructors für Netscape und Internet Explorer zu Kapseln. Falls Sie diese Datei im Internet benutzen wollen, entfernen Sie bitte vorher alle nicht benötigten Funktionen und Kommentare, da diese Datei doch recht groß ist.

Ein Beispiel zur Verwendung finden Sie in der Rubrik Beispiele.

classid Die OLE-ID (ClassID) des o2c-Constructors. Dieser Text ist konstant für alle Objekte.

codebase Die URL, unter der das Installationsarchiv des ActiveX-Controls abgerufen werden kann, falls auf dem lokalen Computer nicht mindestens die hier angegebene Version bereits installiert ist. In der Regel sollten Sie hier die oben angegebene URL wörtlich übernehmen, es sei denn, Sie schreiben Dateien für ein Intranet und haben innerhalb dieses Netzes einen eigenen Installationsserver eingerichtet.

width Die Breite des Plugins (in Pixeln). Dieser Wert wird ignoriert, da das PlugIn nicht sichtbar ist.

height Die Höhe des Plugins (in Pixeln). Dieser Wert wird ignoriert, da das PlugIn nicht sichtbar ist.

Page 2 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

Last update: 04/10/2011 03:22:36

Einbindung des o2c-Constructors in Delphi.

Da der o2c-Constructor ein ganz normales ActiveX-Control ist können Sie ihn wie jedes andere COM-Objekt auch mit Borland Delphi benutzen. Die hier vorgestellte Einbindung bezieht sich auf die Version 4 von Delphi. In anderen Versionen können die Menüeinträge eventuell an anderer Stelle erscheinen - an der grundsätzlichen Methode ändert dies aber nichts.

So binden Sie den o2c-Constructor in Delphi ein:

1. Erstellen Sie ein neues Projekt. 2. Öffnen Sie über "Projekt/Typbibliothek importieren..." den Import Dialog von Delphi.

3. Selektieren Sie dort den Eintrag "o2c - simple objectcreation (Version x)". und schliessen Sie den Dialog mit "OK".

4. Fügen die soeben erzeugte Unit in die uses-Klausel Ihres Hauptformulars ein. 5. Platzieren Sie eine Instanz des O2CPlayers auf Ihrem Formular. 6. Fügen Sie eine Variable des Typs "IO2cAreaConstructor" zu Ihrer Formular-Klasse hinzu. 7. Im OnCreate-Ereignis Ihres Formulars fügen Sie folgenden Code hinzu:

O2CConstructor1 := CoO2cAreaConstructor_.Create; O2CConstructor1.SetPlayer(O2CPlayer1);

Nun können Sie den o2c-Constructor wie in dieser Hilfe-Datei beschrieben benutzen. Sie können sich dabei an der VisualBasic-Notation orientieren, da Delphi automatisch WrapperSie erzeugt.

Ein Beispiel zur Verwendung finden Sie in der Rubrik Beispiele.

Last update: 04/10/2011 03:22:36

Einbindung des o2c-Constructors in C++.

Da der o2c-Constructor ein ganz normales ActiveX-Control ist können Sie ihn wie jedes andere COM-Objekt auch mit C++ benutzen. Zu diesem Zweck finden Sie hierFiles.

So binden Sie den o2c-Constructor in C++ ein:

1. Fügen Sie Ihrem Projekt die Header-Datei und die Interface-Datei hinzu. 2. Erstellen Sie eine Instanz des o2c-Players. 3. Mit folgendem Code erzeugen Sie eine Instanz des o2c-Constructors:

#include "o2cAreaConstructor.h" HRESULT CreateO2CConstructor(IDispatch* lpO2CPlayer, IO2cAreaConstructor** lplpConstr) { IClassFactory* pICF = NULL; IUnknown* lpUnknown = NULL; IO2cAreaConstructor* lpConstr = NULL; VARIANT_BOOL ret = VARIANT_FALSE; HRESULT hr; // Parameter check: if (!lpO2CPlayer || !lplpConstr) return E_FAIL; // Class factory erzeugen: hr = CoGetClassObject(CLSID_O2cAreaConstructor, CLSCTX_SERVER, NULL, IID_IClassFactory, (void**)&pICF); if (FAILED(hr) || !pICF) return hr; // Instanz erzeugen: hr = pICF->CreateInstance(NULL, IID_IUnknown, (void**)&lpUnknown); pICF->Release(); if (FAILED(hr) || !lpUnknown) return hr; // IO2cAreaConstructor-Interface abholen: hr = lpUnknown->QueryInterface(IID_IO2cAreaConstructor, (void**)&lpConstr); lpUnknown->Release(); if (FAILED(hr) || !lpConstr) return hr; // Constructor mit dem Player verbinden: hr = lpConstr->SetPlayer(lpO2CPlayer, &ret); if (FAILED(hr) || ret == VARIANT_FALSE) {

Page 3 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

lpConstr->Release(); return hr; } // Erfolg: *lplpConstr = lpConstr; return S_OK; }

Nun können Sie den o2c-Constructor wie in dieser Hilfe-Datei beschrieben benutzen.

Ein Beispiel zur Verwendung finden Sie in der Rubrik Beispiele.

Last update: 04/10/2011 03:22:36

Einbindung des o2c-Constructors in Microsoft Visual Basic.

Da der o2c-Constructor ein ganz normales ActiveX-Control ist können Sie ihn wie jedes andere COM-Objekt auch mit VisualBasic benutzen. Die hier vorgestellte Einbindung bezieht sich auf die Version 6 von VB. In anderen Versionen können die Menüeinträge eventuell an anderer Stelle erscheinen - an der grundsätzlichen Methode ändert dies aber nichts.

So binden Sie den o2c-Constructor in VisualBasic ein:

1. Erstellen Sie ein neues Projekt. 2. Öffnen Sie über "Projekt/Verweise..." den Typbibliotheks-Katalog von Visual Basic.

3. Selektieren Sie dort den Eintrag "o2c - simple objectcreation". und schließen Sie den Dialog mit "OK".

4. Platzieren Sie eine Instanz des O2CPlayers auf Ihrem Formular.

Nun können Sie den o2c-Constructor wie in dieser Hilfe-Datei beschrieben benutzen. Sie müssen diese Schritte bei jedem neuen Projekt erneut ausführen, da Basic die Verweise pro Projekt speichert.

Ein Beispiel zur Verwendung finden Sie in der Rubrik Beispiele.

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Objekt-Referenz

Hier finden Sie eine Übersicht aller Objekte des o2c-Constructors. Das wichtigste Objekt für alle Operationen ist IO2cAreaConstructor. Mit Hilfe dieses Objektes können Sie Instanzen aller "Konstruktoren" anlegen.

Objekte:

IObjectConstructor Dieses Objekt dient zur Erzeugung von 3D-Modellen, welche Sie dann in den o2c-Player integrieren können.

ILabel Erzeugen Sie mit diesem Objekt Schilder und Texturen.

IO2cAreaConstructor Der Kern des Constructors.

IMaterial Objekt zur Beschreibung eines Materials.

IO2cWriteParams Erweiterte Objektdaten beim Speichern von Objekten.

IAcoWriteParams Basis-Objektdaten beim Speichern von Objekten.

IObjectConstructor

Objekt zum Erzeugen von 3D-Modellen.

Verwendung:

1. Erzeugen Sie mittels IO2cAreaConstructor.NewConstructor ein neues IObjectConstructor-Objekt. 2. Fügen Sie dem Objekt Punkte und Polygone hinzu.

Page 4 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

3. Schließen Sie jedes Subobject mit CloseSubObject ab. 4. Schließen Sie das Objekt mit Finish ab.

Ein Beispiel zur Verwendung finden Sie in der Rubrik Beispiele.

Funktionen:

SetPoint Setzt einen Punkt eines Dreiecks, Vierecks oder Polygons

SetHolePoint Setzt eine Koordinate eines Punktes innerhalb des Objektes.

AddTriangle Fügt dem Objekt ein Dreieck hinzu.

AddQuadriliteral Fügt dem Objekt ein Viereck hinzu.

AddPolygonWithHoles Fügt dem Objekt ein Polygon mit Löchern hinzu

SetContur Setzt alle Punkte eines Polygons auf einmal.

SetHoleContur Setzt alle Punkte eines Loches auf einmal.

CloseSubObject Beendet das aktuelle Subobjekt.

AddLight Fügt dem Objekt eine Lichtquelle hinzu.

Finish Fertigstellung des Objektes.

Init Setzt globale Parameter und startet ein neues Objekt.

SetSubObjectName Setzt den Namen eines Subobjektes.

IObjectConstructor::SetPoint

Während der Konstruktion von Objekten können Sie mit dieser Funktion einzelne Punkte zu Dreiecken, Polygonen oder Vierecken hinzufügen. Der Parameter indexPunkt Sie setzen wollen. Für ein Dreieck z.B.würden Sie die Indices 0, 1 und 2 setzen.

Sobald Sie alle Punkte einer Fläche gesetzt haben, können Sie diese mit AddTriangle, AddQuadriliteral oder AddPolygonWithHoles zu dem Objekt hinzufügen.

Deklaration:

C++: HRESULT SetPoint(short index, float x, float y, float z, float u, float v);

Basic: Sub SetPoint(ByVal index As Short, ByVal x As Single, ByVal y As Single, ByVal z As Single, ByVal u As Single, ByVal v As Single)

Parameter:

index Index des Punktes, bei 0 beginnend, innerhalb des Polygons, Dreiecks oder Vierecks.

x, y, z 3D-Koordinate des Punktes.

u, v Textur-Koordinate des Punktes.

IObjectConstructor::SetHolePoint

Während der Konstruktion von Objekten können Sie mit dieser Funktion einzelne Löcher zu Polygonen hinzufügen. Der Parameter holeIndex bestimmt dabei, welches Loch Sie gerade bearbeiten. Der Parameter pointIndex gibt an, welchen Punkt innerhalb des Loches Sie setzen wollen. Für ein Dreieck z.B.würden Sie die Indices 0, 1 und 2 setzen.

Sobald Sie alle Punkte und Löcher einer Fläche gesetzt haben, können Sie diese mit AddPolygonWithHoles zu dem Objekt hinzufügen.

Deklaration:

C++: HRESULT SetHolePoint(short holeIndex, short pointIndex, float x, float y, float z, float u, float v);

Basic: Sub SetHolePoint(ByVal holeIndex As Short, ByVal pointIndex As Short, ByVal x As Single, ByVal y As Single, ByVal z As Single, ByVal u As Single, ByVal v As Single)

Parameter:

holeIndex Index des Loches, bei 1 beginnend. Ein Polygon kann mehrere Löcher haben.

pointIndex Index des Punktes, bei 0 beginnend innerhalb des Loches.

x, y, z 3D-Koordinate des Punktes.

u, v Textur-Koordinate des Punktes.

IObjectConstructor::AddTriangle

Mit dieser Funktion können Sie ein Dreieck zu dem aktuellen (Sub-) Objekt hinzufügen. Sie müssen die Punkte des Dreiecks vorher per SetPoint hinzugefügt haben. Desweiteren müssen Sie bereits ein Material definiert haben.

Deklaration:

C++: HRESULT AddTriangle(long SharpEdgesAndSnapFlag, IMaterial* mat, BSTR TextureName);

Basic: Sub AddTriangle(ByVal SharpEdgesAndSnapFlag As Long, ByRef mat As IMaterial, ByVal TextureName As String)

Page 5 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Parameter:

SharpEdgesAndSnapFlag Bitmaske, die die Eigenschaften der Fläche repräsentieren. Addieren Sie dazu bitte folgende Werte: 0x0002: Diese Fläche kann zum Schnappen verwendet werden. 0x0100: Kante 1 ist eine scharfe Kante. 0x0200: Kante 2 ist eine scharfe Kante. 0x0400: Kante 3 ist eine scharfe Kante.

mat Materialdefinition. Diese können Sie per IO2cAreaConstructor.NewMaterial erzeugen

TextureName Name der Textur (Dateiname oder interner Name). Kann leer sein, falls das Material nicht texturiert ist.

IObjectConstructor::AddQuadriliteral

Mit dieser Funktion können Sie ein Viereck zu dem aktuellen (Sub-) Objekt hinzufügen. Sie müssen die Punkte des Vierecks vorher per SetPoint hinzugefügt haben. Desweiteren müssen Sie bereits ein Material definiert haben.

Deklaration:

C++: HRESULT AddTriangle(long SharpEdgesAndSnapFlag, IMaterial* mat, BSTR TextureName);

Basic: Sub AddTriangle(ByVal SharpEdgesAndSnapFlag As Long, ByRef mat As IMaterial, ByVal TextureName As String)

Parameter:

SharpEdgesAndSnapFlag Bitmaske, die die Eigenschaften der Fläche repräsentieren. Addieren Sie dazu bitte folgende Werte: 0x0002: Diese Fläche kann zum Schnappen verwendet werden. 0x0100: Kante 1 ist eine scharfe Kante. 0x0200: Kante 2 ist eine scharfe Kante. 0x0400: Kante 3 ist eine scharfe Kante. 0x0800: Kante 4 ist eine scharfe Kante.

mat Materialdefinition. Diese können Sie per IO2cAreaConstructor.NewMaterial erzeugen

TextureName Name der Textur (Dateiname oder interner Name). Kann leer sein, falls das Material nicht texturiert ist.

IObjectConstructor::AddPolyonWithHoles

Mit dieser Funktion können Sie ein Polygon zu dem aktuellen (Sub-) Objekt hinzufügen. Sie müssen die Punkte und Löcher des Polygons vorher per SetPoint und SetHolePointhaben. Desweiteren müssen Sie bereits ein Material definiert haben.

Deklaration:

C++: HRESULT AddPolygonWithHoles(VARIANT_BOOL SharpEdges, VARIANT_BOOL Snap, IMaterial* mat, BSTR TextureName);

Basic: Sub AddPolygonWithHoles(ByVal SharpEdges As Boolean, ByVal Snap As Boolean, ByRef mat As IMaterial, ByVal TextureName As String)

Parameter:

SharpEdges Dieses Polygon hat scharfe Kanten.

Snap Dieses Polygon kann zum Schnappen verwendet verden.

mat Materialdefinition. Diese können Sie per IO2cAreaConstructor.NewMaterial erzeugen

TextureName Name der Textur (Dateiname oder interner Name). Kann leer sein, falls das Material nicht texturiert ist.

IObjectConstructor::SetContur

Mit dieser Funktion können Sie gleich mehrere Punkte eines Polygons setzen.

Sobald Sie alle Punkte und Löcher einer Fläche gesetzt haben, können Sie diese mit AddPolygonWithHoles zu dem Objekt hinzufügen.

Deklaration:

C++: HRESULT SetContur(short numPoints, VARIANT points);

Basic: Sub SetContur(ByVal numPoints As Short, ByVal points As Variant)

Parameter:

numPoints Anzahl der Punkte im Array.

points Variantes Array mit den Punkten.

IObjectConstructor::SetHoleContur

Mit dieser Funktion können Sie gleich mehrere Punkte eines Loches eines Polygons setzen.

Sobald Sie alle Punkte und Löcher einer Fläche gesetzt haben, können Sie diese mit AddPolygonWithHoles zu dem Objekt hinzufügen.

Deklaration:

C++: HRESULT SetHoleContur(short holeIndex, short numPoints, VARIANT points);

Page 6 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Basic: Sub SetHoleContur(ByVal holeIndex As Short, ByVal numPoints As Short, ByVal points As Variant)

Parameter:

holeIndex Index des aktuellen Loches.

numPoints Anzahl der Punkte im Array.

points Variantes Array mit den Punkten.

IObjectConstructor::CloseSubObject

Ein konstruiertes Objekt kann im o2c-Constructor aus mehreren Sub-Objekten bestehen. Sobald Sie ein Subobjekt abgeschlossen haben, rufen Sie CloseSubObject auf. Sie können dieses Objekt später per SetSubObjectName mit einem Namen versehen. Alle darauf folgenden Polygonmethoden beziehen sich nun auf das nächste Subobjekt. Wenn Sie das Objekt mit schließen, wird das aktuelle Subobjekt automatisch geschlossen.

Deklaration:

C++: HRESULT CloseSubObject(long *pResult);

Basic: Function CloseSubObject As Long

Rückgabewert (In C++ über pResult):

Index des erzeugten Sub-Objektes

IObjectConstructor::AddLight

Mit dieser Funktion können Sie eine Lichtquelle zu dem Objekt hinzufügen. Sie bestimmen dabei die Position und die Farbe des Lichtes.

Deklaration:

C++: HRESULT AddLight(float posX, float posY, float posZ, float colRed, float colGreen, float colBlue, VARIANT_BOOL *pResult);

Basic: Function AddLight(ByVal posX As Single, ByVal posY As Single, ByVal posZ As Single, ByVal colRed As Single, ByVal colGreen As Single, ByVal colBlue As Single) As Boolean

Parameter:

posX, posY, posZ Position des Lichtes innerhalb des Objektes.

colRed, colGreen, colBlue

Farbanteile des Lichts. Der Wertebereich geht hier von 0.0 bis 1.0

Rückgabewert (In C++ über pResult):

True, wenn erfolgreich, ansonsten False.

IObjectConstructor::Finish

Erzeugt das Objekt aus den bis jetzt übergebenen Daten und fügt dieses in den o2c-Player ein. Dort kann es wie jedes beliebige, mit AddObject geladenes, Objekt behandelt werden. Das Objekt wird nicht auf der Festplatte sondern intern im o2c-Player gespeichert.

Wenn Sie dieses IObjectConstructor-Objekt weiterhin verwenden wollen, reinitialisieren Sie es bitte mit Init.

Deklaration:

C++: HRESULT Finish(BSTR Name, long additionalFlags, long *pResult);

Basic: Function Finish(ByVal Name As String, ByVal additionalFlags As Long) As Long

Parameter:

Name Interner Name des Objektes.

additionalFlags Zur Zeit keine Flags definiert.

Rückgabewert (In C++ über pResult):

Die ID des erzeugten Objektes innerhalb des o2c-Players.

IObjectConstructor::Init

Mit dieser Funktion können Sie die Objektkonstruktion (re-) initialisieren. Dies ist nur notwendig, falls Sie vom Standard abweichende Einstellungen verwenden wollen oder wenn Sie ein mit Finish abgeschlossenes IObjectConstructor-Objekt weiterverwenden wollen.

Deklaration:

C++: HRESULT Init(float MinPntDist, float SharpAngle, VARIANT_BOOL *pResult);

Basic: Function Init(ByVal MinPntDist As Single, ByVal SharpAngle As Single) As Boolean

Parameter:

Page 7 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

MinPtDist Maximaler Abstand zwischen zwei Punkten, beim dem diese als gleich angesehen werden.

SharpAngle Minimaler Winkel, bei dem Kanten als scharf angesehen werden.

Rückgabewert (In C++ über pResult):

True, wenn erfolgreich, ansonsten False.

IObjectConstructor::SetSubObjectName

O2C-Objekte enthalten die Namen der Teilobjekte, die als Tooltip angezeigt werden. Diese Texte können in mehreren Sprachen im Objekt enthalten sein. Sie können natürlich auch Ihre selbstkonstruierten Objekte mit Namen versehen. Verwenden Sie dazu bitte den Index des Subobjektes, der von CloseSubObject zurückgeliefert wird.

Deklaration:

C++: HRESULT SetSubObjectName(long Index, BSTR Language, BSTR Name, VARIANT_BOOL *pResult);

Basic: Function SetSubObjectName(ByVal Index As Long, ByVal Language As String, ByVal Name As String) As Boolean

Parameter:

Index Index des Subobjektes. Dies ist der Wert, der von CloseSubObject zurückgeliefert wird.

Language Sprache des Namens. Es ist möglich, den Objektnamen in mehrere Sprachen anzugeben. Gültige Sprachkennungen sind zwei Zeichen lang und großgeschrieben, z.B. "DE" für Deutsch oder "XX" für neutral.

Name Der Name des Subobjektes.

Rückgabewert (In C++ über pResult):

True, wenn erfolgreich, ansonsten False.

ILabel

Objekt zum Erzeugen von Text-Texturen.

Verwendung:

1. Erzeugen Sie mittels IO2cAreaConstructor.NewLabel ein neues ILabel-Objekt. 2. Stellen Sie die gewünschten Eigenschaften wie Caption, ForeColor usw. ein. 3. Erzeugen Sie die Textur per ILabel.CreateTexture 4. Binden Sie die erzeugte Textur mittels IO2CPlayer.ReplaceTexture in den o2c-Player ein.

Ein Beispiel zur Verwendung finden Sie in der Rubrik Beispiele.

Eigenschaften:

Alignment Horizontale Ausrichtung des Textes.

AutoSize Automatische Anpassung der Texturgrösse an die Textgrösse.

BackColor Hintergrundfarbe des Textes.

BackStyle Hintergrundstil des Textes (Transparent oder Deckend).

BorderStyle Rahmentyp.

Caption Der Text, der auf dieser Textur erscheinen soll.

Font Der Zeichensatz, mit dem gezeichnet werden soll.

ForeColor Textfarbe.

Height Höhe der Textur.

Left Abstand des Textes vom linken Rand der Textur.

Top Abstand des Textes vom oberen Rand der Textur.

Width Breite der Textur.

WordWrap Steuert den automatischen Zeilenumbruch.

BorderColor Rahmenfarbe

vAlign Vertikale Ausrichtung des Textes.

Funktionen:

CreateTexture Fertigstellung der Textur.

ILabel::Alignment

Bestimmt die horizontale Ausrichtung des Textes innerhalb des Textfeldes. Mögliche Werte sind: 0: Links 1: Rechts

Page 8 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

2: Zentriert

Eigenschaft:

Typ: Short

Standardwert: 0 (Links)

ILabel::AutoSize

Wenn AutoSize auf True gesetzt ist, werden die Abmessungen des Textfeldes automatisch an den Text angepasst.

Eigenschaft:

Typ: Boolean

Standardwert: False

ILabel::BackColor

Bestimmt die Hintergrundfarbe des Textes.

Eigenschaft:

Typ: Long

Standardwert: 0x00FFFFFF, Weiß

ILabel::BackStyle

Bestimmt, wie der Hintergrund des Textes gezeichnet wird. Mögliche Werte sind: 0: Transparent 1: Deckend

Eigenschaft:

Typ: Short

Standardwert: 1 (Deckend)

ILabel::BorderStyle

Bestimmt, wie der Rand des Textes gezeichnet wird. Mögliche Werte sind: 0: Kein Rahmen 1: Einfacher, dünner Rahmen

Eigenschaft:

Typ: Short

Standardwert: 0 (Kein Rahmen)

ILabel::Caption

Der Text, der auf dieser Textur erscheinen soll.

Eigenschaft:

Typ: String

Standardwert: "" (Leerer String)

ILabel::Font

Der Zeichensatz, mit dem der Text gezeichnet werden soll.

Eigenschaft:

Typ: IFont

Standardwert: Der Standard-Zeichensatz des Systems.

ILabel::ForeColor

Die Farbe, mit der der Text gezeichnet werden soll.

Eigenschaft:

Page 9 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Typ: Long

Standardwert: 0x00000000 (Schwarz)

ILabel::Height

Höhe des Textfeldes.

Eigenschaft:

Typ: Long

Standardwert: 0

ILabel::Left

Abstand des Textfeldes vom linken Rand der Textur.

Eigenschaft:

Typ: Long

Standardwert: 0

ILabel::Top

Abstand des Textfeldes vom oberen Rand der Textur.

Eigenschaft:

Typ: Long

Standardwert: 0

ILabel::Width

Breite des Textfeldes.

Eigenschaft:

Typ: Long

Standardwert: 0

ILabel::WordWrap

Schaltet den automatischen Zeilenumbruch innerhalb des Textfeldes ein oder aus.

Eigenschaft:

Typ: Boolean

Standardwert: True

ILabel::BorderColor

Randfarbe des Textfeldes. Hat keine Auswirkung, wenn der Rand per BorderStyle ausgeschaltet ist.

Eigenschaft:

Typ: Long

Standardwert: 0x00000000 (Schwarz)

ILabel::vAlign

Bestimmt die vertikale Ausrichtung des Textes innerhalb des Textfeldes. Mögliche Werte sind: 0: Oben 1: Unten 2: Zentriert

Eigenschaft:

Typ: Short

Standardwert: 0 (Oben)

Page 10 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

ILabel::CreateTexture

Mit dieser Funktion schließen Sie die Erzeugung der Textur ab. Die Textur wird unter dem angegebenen Namen in den internen Speicher des o2c-Players geladen. Von dort aus kann die Textur mittels IO2CPlayer.ReplaceTexture auf ein Objekt angewand werden. Die Textur wird nicht auf dem Rechner gespeichert.

Deklaration:

C++: HRESULT CreateTexture(OLE_COLOR planeColor, long Width, long Height, BSTR TextureURL, VARIANT_BOOL *pResult);

Basic: Function HRESULT CreateTexture(ByVal planeColor As Long, ByVal Width As Long, ByValHeight As Long, ByVal TextureURL As String) As Boolean

Parameter:

planeColor Hintergrundfarbe der Textur (Nicht des Textes, siehe BackColor).

Width Breite der Textur. Muss einen Wert von 2 hoch n aufweisen (2, 4, 8, 16, 32, 64, 128 usw.)

Height Höhe der Textur. Muss einen Wert von 2 hoch n aufweisen (2, 4, 8, 16, 32, 64, 128 usw.)

TextureURL Interner Name der Textur.

Rückgabewert (In C++ über pResult):

True, wenn erfolgreich, ansonsten False.

IO2cAreaConstructor

Das Hauptobjekt des Controls.

Verwendung: Anweisungen, wie Sie das IO2cAreaConstructor Objekt verwenden, finden Sie unter Einbinden des o2c-Constructors. Beispiele zur Verwendung finden Sie in der Rubrik

Funktionen:

SetPlayer Verbindet den Constructor mit einer Instanz des o2c-Players.

NewConstructor Erzeugt ein neues IObjectConstructor Objekt.

NewMaterial Erzeugt ein neues IMaterial Objekt.

NewLabel Erzeugt ein neues ILabel Objekt.

NewO2CSaveParams Erzeugt ein neues IO2cWriteParams Objekt.

NewAcoWriteParams Erzeugt ein neues IAcoWriteParams Objekt.

ExportObjectAsO2C Exportiert das aktuelle Objekt als Datei.

ExportAllObjectsAsO2C Exportiert die gesamte Szene als Objekt.

ClearPointsOfView Löscht alle Betrachterstandpunkte

AddPointOfView Fügt einen neuen Betrachterstandpunkt hinzu.

SetPointOfViewName Benennt einen Betrachterstandpunkt.

IO2cAreaConstructor::SetPlayer

Verbindet den o2c-Constructor mir einer laufenden Instanz eines o2c-Players. Dies ist notwendig, um den o2c-Constructor nutzen zu können.

Deklaration:

C++: HRESULT SetPlayer(IDispatch * thePlayer, VARIANT_BOOL *pResult);

Basic: Function SetPlayer(ByRef thePlayer As IO2CPlayer) As Boolean

Parameter:

thePlayer Interface einer laufenden o2c-Player Instanz.

Rückgabewert (In C++ über pResult):

True, wenn erfolgreich, ansonsten False

IO2cAreaConstructor::NewConstructor

Mit dieser Funktion können Sie ein neues IObjectConstructor-Objekt erzeugen. Die Parameter entsprechen denen der Funktion IObjectConstructor.Init. Diese braucht bei der Ersterzeugung nicht seperat aufgerufen zu werden.

Deklaration:

C++: HRESULT NewConstructor(float MinPntDist, float SharpAngle, IObjectConstructor **pResult);

Basic: Function NewConstructor(ByVal MinPntDist As Single, ByVal SharpAngle As Single) As IObjectConstructor

Page 11 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Parameter:

MinPtDist Maximaler Abstand zwischen zwei Punkten, beim dem diese als gleich angesehen werden.

SharpAngle Minimaler Winkel, bei dem Kanten als scharf angesehen werden.

Rückgabewert (In C++ über pResult):

Das erzeugte IObjectConstructor-Objekt, oder NULL (bzw. Nothing) im Fehlerfall.

IO2cAreaConstructor::NewMaterial

Mit dieser Funktion können Sie ein neues IMaterial-Objekt erzeugen. Dieses wird bei der Erzeugung von Flächen benötigt.

Deklaration:

C++: HRESULT NewConstructor(IMaterial **pResult);

Basic: Function NewMaterial As IMaterial

Rückgabewert (In C++ über pResult):

Das erzeugte IMaterial-Objekt, oder NULL (bzw. Nothing) im Fehlerfall.

IO2cAreaConstructor::NewLabel

Mit dieser Funktion können Sie ein neues ILabel-Objekt erzeugen. Dieses wird zur Erzeugung von Schildern benötigt.

Deklaration:

C++: HRESULT NewLabel(ILabel **pResult);

Basic: Function NewLabel As ILabel

Rückgabewert (In C++ über pResult):

Das erzeugte ILabel-Objekt, oder NULL (bzw. Nothing) im Fehlerfall.

IO2cAreaConstructor::NewO2CSaveParams

Mit dieser Funktion können Sie ein neues IO2cWriteParams-Objekt erzeugen. Dieses Objekt dient dazu, erweiterte Objekt-Eigenschaften beim Speichern von Objekten einzustellen.

Deklaration:

C++: HRESULT NewO2CSaveParams(IO2cWriteParams **pResult);

Basic: Function NewO2CSaveParams As IO2cWriteParams

Rückgabewert (In C++ über pResult):

Das erzeugte IO2cWriteParams-Objekt, oder NULL (bzw. Nothing) im Fehlerfall.

IO2cAreaConstructor::NewAcoWriteParams

Mit dieser Funktion können Sie ein neues IAcoWriteParams-Objekt erzeugen. Dieses Objekt dient dazu, erweiterte Objekt-Eigenschaften beim Speichern von Objekten einzustellen.

Deklaration:

C++: HRESULT NewAcoWriteParams(IAcoWriteParams **pResult);

Basic: Function NewAcoWriteParams As IAcoWriteParams

Rückgabewert (In C++ über pResult):

Das erzeugte IAcoWriteParams-Objekt, oder NULL (bzw. Nothing) im Fehlerfall.

IO2cAreaConstructor::ExportObjectAsO2C

Speichert ein Objekt aus dem Cache des o2c-Players als o2c-Datei. Sie benötigen dazu eine funktionsfähige Version von ArCon ab Version 5 oder des o2c-Composers.

Die Parameter des Objektes können Sie mit den Parametern o2cParams und objectParams einstellen.

Deklaration:

C++: HRESULT ExportObjectAsO2C(long objectID, BSTR fileName, IO2cWriteParams *o2cParams, IAcoWriteParams *objectParams, VARIANT_BOOL *pVal);

Basic: Function ExportObjectAsO2C(ByVal objectID As Long, ByVal fileName As String, ByRef o2cParams As IO2cWriteParams, ByRef objectParams As IAcoWriteParams) As Boolean

Parameter:

Page 12 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

objectID Die Objekt-ID innerhalb des o2c-Players.

fileName Dateiname unter dem das Objekt gespeichert werden soll.

o2cParams IO2cWriteParams-Objekt, das die erweiterten Eigenschaften des gespeicherten Objektes beschreibt.

objectParams IAcoWriteParams-Objekt, das die grundlegenden Eigenschaften des gespeicherten Objektes beschreibt.

Rückgabewert (In C++ über pResult):

True, wenn erfolgreich, ansonsten False.

IO2cAreaConstructor::ExportAllObjectsAsO2C

Speichert die komplette Szene des o2c-Players als o2c-Datei. Sie benötigen dazu eine funktionsfähige Version von ArCon ab Version 5 oder des o2c-Composers.

Die Parameter des Objektes können Sie mit den Parametern o2cParams und objectParams einstellen.

Deklaration:

C++: HRESULT ExportAllObjectsAsO2C(BSTR fileName, IO2cWriteParams *o2cParams, IAcoWriteParams *objectParams, VARIANT_BOOL *pVal);

Basic: Function ExportAllObjectsAsO2C(ByVal fileName As String, ByRef o2cParams As IO2cWriteParams, ByRef objectParams As IAcoWriteParams) As Boolean

Parameter:

fileName Dateiname unter dem das Objekt gespeichert werden soll.

o2cParams IO2cWriteParams-Objekt, das die erweiterten Eigenschaften des gespeicherten Objektes beschreibt.

objectParams IAcoWriteParams-Objekt, das die grundlegenden Eigenschaften des gespeicherten Objektes beschreibt.

Rückgabewert (In C++ über pResult):

True, wenn erfolgreich, ansonsten False.

IO2cAreaConstructor::ClearPointsOfView

Löscht alle vordefinierten Betrachterstandpunkte innerhalb der Szene.

Deklaration:

C++: HRESULT ClearPointsOfView();

Basic: Sub ClearPointsOfView

IO2cAreaConstructor::AddPointOfView

Fügt der Szene einen vordefinierten Betrachterstandpunkt hinzu. Diese können über das Kontextmenü des o2c-Players oder auch über JavaScript aufgerufen werden.

Deklaration:

C++: HRESULT AddPointOfView(float VRPx, float VRPy, float VRPz, float EyeX, float EyeY, float EyeZ, float tanViewAngleHalf, VARIANT_BOOL parallel, long *pResult);

Basic: Function AddPointOfView(ByVal VRPx As Single, ByVal VRPy As Single, ByVal VRPz As Single, ByVal EyeX As Single, ByVal EyeY As Single, ByVal EyeZ As Single, ByVal tanViewAngleHalf As Single, ByVal parallel As Boolean) As Long

Parameter:

VRPx, VRPy, VRPy Weltkoordinaten des View Reference Points (des Punktes, auf den der Betrachter blickt).

EyeX, EyeY, EyeZ Weltkoordinaten des Augpunktes (des Punktes, von dem aus der Betrachter blickt).

tanViewAngleHalf Der Tangens des Winkels zwischen dem Strahl vom Augpunkt durch den VRP und dem Strahl zwischen dem Augpunkt und einem Punkt am äußersten Rand der Projektionsfläche. Anders ausgedrückt: die Hälfte der Breite der (sichtbaren) Projektionsfläche geteilt durch den Abstand des Betrachters von dieser Fläche.

parallel Perspektivisch korrekte Ansicht oder parallele Ansicht.

Rückgabewert (In C++ über pResult):

Die ID des neu hinzugefügten Betrachterstandpunktes.

IO2cAreaConstructor::SetPointOfViewName

Mit dieser Funktion können Sie einen Betrachterstandpunkt mit einem Namen versehen.

Deklaration:

C++: HRESULT SetPointOfViewName(long povIndex, BSTR povName, BSTR Language, VARIANT_BOOL *pResult);

Basic: Function SetPointOfViewName(ByVal povIndex As Long, ByVal povName As String, ByVal Language As String) As Boolean

Page 13 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Parameter:

povIndex Index des zu bearbeiteten Betrachterstandpunktes.

povName Der neue Name.

Language Gültige Sprachkennungen sind zwei Zeichen lang und großgeschrieben, z.B. "DE" für Deutsch oder "XX" für neutral.

Rückgabewert (In C++ über pResult):

True, wenn erfolgreich, ansonsten False.

IMaterial

Materialparameter eines Objektes.

Verwendung:

1. Erzeugen Sie mittels IO2cAreaConstructor.NewMaterial ein neues IMaterial-Objekt. 2. Stellen Sie die gewünschten Eigenschaften ein. 3. Übergeben Sie das Material bei den Dreiecks-, Quad- und Polygonfunktionen von IObjectConstructor

Ein Beispiel zur Verwendung finden Sie in der Rubrik Beispiele.

Eigenschaften:

AmbientCoefficient Reflektionsfaktor des ambienten Anteil des Lichtes.

DiffuseCoefficient Reflektionsfaktor des diffusen Anteil des Lichtes..

DiffuseColor Farbe des diffusen Lichtes

Flags Einige Flags, die das Material näher beschreiben.

HighlightExponent Reflektionsfaktor für highlights.

SpecularCoefficient Anteil des reflektierten Lichtes.

Specularcolor Farbe des reflektierten Lichtes.

Transparency Transparenz des Materials.

Transparent Ist das Material transparent?

IMaterial::AmbientCoefficient

Koeffizient (zwischen 0 und 1) zur Bestimmung der Stärke der Reflektion von ambientem Licht.

Um einen Eindruck vom Verhalten dieses Parameters zu erhalten, betrachten Sie bitte folgendes Beispiel.

Eigenschaft:

Typ: float bzw. Single

Standardwert: 0.0

IMaterial::DiffuseCoefficient

Koeffizient (zwischen 0 und 1) zur Bestimmung der Stärke der Reflektion von diffusem Licht.

Um einen Eindruck vom Verhalten dieses Parameters zu erhalten, betrachten Sie bitte folgendes Beispiel.

Eigenschaft:

Typ: float bzw. Single

Standardwert: 0.0

IMaterial::DiffuseColor

Diffuser Anteil des Lichtes.

Um einen Eindruck vom Verhalten dieses Parameters zu erhalten, betrachten Sie bitte folgendes Beispiel.

Eigenschaft:

Typ: Long

Standardwert: 0.0

IMaterial::Flags

Page 14 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Bitmaske, die das Verhalten des Materials bestimmt. Folgende Werte sind möglich:

Um einen Eindruck vom Verhalten dieses Parameters zu erhalten, betrachten Sie bitte folgendes Beispiel.

0x0001: Das Material ist texturiert.

0x0002: Die Textur ist eine Maskentextur.

0x0004: Das Material ist selbstleuchtend.

0x0008: Die Farbe des Materials wird mit der Textur gemischt.

0x0010: Die Flächen mit diesem Material sind auch von innen zu sehen (normalerweise werden nur Außenflächen dargestellt).

0x0020: Die Textur ist eine Reflektionsmaske.

0x0040: Das Material reflektiert beim Raytracen ideal.

Eigenschaft:

Typ: Long

Standardwert: 0

IMaterial::HighlightExponent

Koeffizient (zwischen 0 und 1) zur Bestimmung der Stärke der Refraktion.

Um einen Eindruck vom Verhalten dieses Parameters zu erhalten, betrachten Sie bitte folgendes Beispiel.

Eigenschaft:

Typ: float bzw. Single

Standardwert: 0.0

IMaterial::SpecularCoefficient

Koeffizient (zwischen 0 und 1) zur Bestimmung der Stärke der glänzenden Reflektion.

Um einen Eindruck vom Verhalten dieses Parameters zu erhalten, betrachten Sie bitte folgendes Beispiel.

Eigenschaft:

Typ: float bzw. Single

Standardwert: 0.0

IMaterial::SpecularColor

Farbe (RGB), in der das Licht spiegelnd/glänzend reflektiert wird.

Um einen Eindruck vom Verhalten dieses Parameters zu erhalten, betrachten Sie bitte folgendes Beispiel.

Eigenschaft:

Typ: Long

Standardwert: 0.0

IMaterial::Transparency

Tranparenz des Materials, wobei die Werte 0.0 für massiv und 1.0 für ganz durchsichtig stehen.

Um einen Eindruck vom Verhalten dieses Parameters zu erhalten, betrachten Sie bitte folgendes Beispiel.

Eigenschaft:

Typ: float bzw. Single

Standardwert: 0.0

IMaterial::Transparent

Schaltet die Transparenz des Materials ein bzw. aus.

Eigenschaft:

Typ: Boolean

Standardwert: False

Page 15 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

IO2cWriteParams

Eigenschaften eines gespeicherten Objektes.

Verwendung:

1. Erzeugen Sie mittels IO2cAreaConstructor.NewO2CSaveParams ein neues IO2cWriteParams-Objekt. 2. Erzeugen Sie mittels IO2cAreaConstructor.NewAcoSaveParams ein neues IAcoWriteParams-Objekt. 3. Stellen Sie die gewünschten Eigenschaften ein. 4. Speichern Sie das Objekt per IO2cAreaConstructor.ExportObjectAsO2C oder IO2cAreaConstructor.ExportAllObjectsAsO2C

Ein Beispiel zur Verwendung finden Sie in der Rubrik Beispiele.

Eigenschaften:

BackgroundFileName Name des Hintergrundbildes, das in die o2c-Datei integriert werden soll

BackgroundColor Hintergrund des Objektes beim Erzeugen von Vorschaubildern.

BackgroundMode Hintergrundmodus des Objektes beim Erzeugen von Vorschaubildern.

BackgroundQuality JPEG-Qualität des Hintergrundbildes.

BkOffsetX Horizontaler Versatz des Hintergrundbildes beim Erzeugen von Vorschaubildern

Bkoffsety Vertikaler Versatz des Hintergrundbildes beim Erzeugen von Vorschaubildern.

PanX Horizontaler Versatz des Objektes beim Erzeugen von Vorschaubilderng

PanY Vertikaler Versatz des Objektes beim Erzeugen von Vorschaubildern.

Psi Drehung des Objektes beim Erzeugen von Vorschaubildern.

Phi Drehung des Objektes beim Erzeugen von Vorschaubildern.

Zoom Skalierung des Objektes beim Erzeugen von Vorschaubildern.

AboutUrl Beschreibende URL des Objektes.

TextureQuality JPEG-Qualität der eingebetteten Texturen.

PreviewWidth Breite des Vorschaubildes.

PreviewHeight Höhe des Vorschaubildes.

PreviewFileName Dateiname eines existierenden Vorschaubildes.

PreviewQuality JPEG-Qualität des Vorschaubildes.

CreatePreview Vorschaubild erzeugen.

CombineTextures Gleiche Texturen beim Speichern zusammenfassen.

CombineMaterials Gleiche Materialien beim Speichern zusammenfassen..

MayBeRepublished Dieses Objekt darf Teil anderer Objekte sein.

IsCommercial Dieses Objekt darf kommerziell verwendet werden.

IO2cWriteParams::BackgroundFileName

Dateiname des Hintergrundbildes, das in die o2c-Datei integriert werden soll.

Eigenschaft:

Typ: String

Standardwert: "" (Leerer String)

IO2cWriteParams::BackgroundColor

Hintergrundfarbe des Objektes beim Erzeugen von Vorschaubildern.

Eigenschaft:

Typ: Long

Standardwert: 0x00000000 (Schwarz)

IO2cWriteParams::BackgroundMode

Hintergrundmodus des Objektes. Mögliche Werte sind: 0: Einfarbig, mit konstanter Farbe gefüllt. 1: Das Hintergrundbild wird einmal dargestellt, und dabei auf die Größe des O2C-Players skaliert. 2: Das Hintergrundbild wird mehrfach (gekachelt) in seiner Originalgröße dargestellt.

Eigenschaft:

Page 16 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Typ: Long

Standardwert: 0

IO2cWriteParams::BackgroundQuality

JPEG-Qualität des Hintergrundbildes, das in die o2c-Datei integriert werden soll. Ein normaler Wert ist 70, 100 = beste Qualität.

Eigenschaft:

Typ: Long

Standardwert: 0

IO2cWriteParams::BkOffsetX

Horizontaler Versatz des Hintergrundbildes beim Erzeugen von Vorschaubildern.

Eigenschaft:

Typ: Long

Standardwert: 0

IO2cWriteParams::BkOffsetY

Vertikaler Versatz des Hintergrundbildes beim Erzeugen von Vorschaubildern.

Eigenschaft:

Typ: Long

Standardwert: 0

IO2cWriteParams::PanX

Horizontaler Versatz des Objektes beim Erzeugen von Vorschaubildern.

Eigenschaft:

Typ: Long

Standardwert: 0

IO2cWriteParams::PanY

Vertikaler Versatz des Objektes beim Erzeugen von Vorschaubildern.

Eigenschaft:

Typ: Long

Standardwert: 0

IO2cWriteParams::Psi

Drehung des Objektes in Psi beim Erzeugen von Vorschaubildern.

Eigenschaft:

Typ: float bzw. Single

Standardwert: 0

IO2cWriteParams::Phi

Drehung des Objektes in Phi beim Erzeugen von Vorschaubildern.

Eigenschaft:

Typ: float bzw. Single

Standardwert: 0

IO2cWriteParams::Zoom

Page 17 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Skalierung des Objektes beim Erzeugen von Vorschaubildern.

Eigenschaft:

Typ: float bzw. Single

Standardwert: 0

IO2cWriteParams::AboutUrl

Internetadresse, die das Objekt näher beschreibt. Dies kann zum Beispiel die URL des Erzeugers sein.

Eigenschaft:

Typ: String

Standardwert: "www.o2c.de"

IO2cWriteParams::TextureQuality

JPEG-Qualität der Texturen, die in die o2c-Datei integriert werden. Ein normaler Wert ist 70, 100 = beste Qualität.

Eigenschaft:

Typ: Long

Standardwert: 0

IO2cWriteParams::PreviewWidth

Breite des zu erzeugenden Vorschaubildes.

Eigenschaft:

Typ: Long

Standardwert: 0

IO2cWriteParams::PreviewHeight

Höhe des zu erzeugenden Vorschaubildes.

Eigenschaft:

Typ: Long

Standardwert: 0

IO2cWriteParams::PreviewFileName

Anstatt ein ein Vorschaubild zu generieren, können Sie auch ein externes Bild verwenden. Dieses bestimmen Sie mit der Eigenschaft PreviewFileName. Dabei muss es sich um eine WindowsBMP oder um eine JPEG-Datei handeln.

Eigenschaft:

Typ: String

Standardwert: "" (Leerer String)

IO2cWriteParams::PreviewQuality

JPEG-Qualität des Vorschaubildes, das in die o2c-Datei integriert werden soll. Ein normaler Wert ist 70, 100 = beste Qualität.

Eigenschaft:

Typ: Long

Standardwert: 0

IO2cWriteParams::CreatePreview

Gibt an, ob ein Vorschaubild erzeugt werden soll. Wenn Sie diese Eigenschaft auf true setzen, müssen Sie auch die anderen, die Vorschaubilder betreffenden, Eigeschaften setzen.

Eigenschaft:

Typ: Boolean

Standardwert: False

Page 18 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

IO2cWriteParams::CombineTextures

Gibt an, ob gleiche Texturen beim Speichern zu einer zusammengefasst werden sollen.

Eigenschaft:

Typ: Boolean

Standardwert: False

IO2cWriteParams::CombineMaterials

Gibt an, ob gleiche Materialien beim Speichern zu einem zusammengefasst werden sollen.

Eigenschaft:

Typ: Boolean

Standardwert: False

IO2cWriteParams::CombineTextures

Wenn Sie diese Eigenschaft auf true setzen, können Sie das Objekt wiederum in andere Objekte integrieren.

Eigenschaft:

Typ: Boolean

Standardwert: False

IO2cWriteParams::IsCommercial

Dieses Objekt darf kommerziell verwendet werden. Vorsicht: Beim Speichern wird Ihr Lizenzvorrat ohne Nachfrage um eins verringert.

Eigenschaft:

Typ: Boolean

Standardwert: False

IAcoWriteParams

Eigenschaften eines gespeicherten Objektes.

Verwendung:

1. Erzeugen Sie mittels IO2cAreaConstructor.NewO2CSaveParams ein neues IO2cWriteParams-Objekt. 2. Erzeugen Sie mittels IO2cAreaConstructor.NewAcoSaveParams ein neues IAcoWriteParams-Objekt. 3. Stellen Sie die gewünschten Eigenschaften ein. 4. Speichern Sie das Objekt per IO2cAreaConstructor.ExportObjectAsO2C oder IO2cAreaConstructor.ExportAllObjectsAsO2C

Ein Beispiel zur Verwendung finden Sie in der Rubrik Beispiele.

Eigenschaften:

DefaultZ Höhe des Objektes, wenn dieses in ArCon eingefügt wird.

LogName Logischer Name des Objektes.

LampsDefaultOn Sollen die internen Lampen des Objektes beim Laden eingeschaltet sein?

HasGravity Dieses Objekt fällt.

GravityUp Das Objekt fällt nach oben (an die Decke).

GravityDefaultOn Soll das Fallen beim Laden eingeschaltet sein?

DisplayTurn Dreht das Objekt um 180 Grad, wenn es geladen wird.

IAcoWriteParams::DefaultZ

Gibt die standardmäße Höhe des Objektes an, wenn dieses in ArCon geladen wird.

Eigenschaft:

Typ: float bzw. Single

Standardwert: 0.0

Page 19 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

Last update: 04/10/2011 03:22:36

IAcoWriteParams::LogName

Logischer Name des Objektes, wie er z.B. im ArCon-Explorer angezeigt wird.

Eigenschaft:

Typ: String

Standardwert: "" (Leerer String)

IAcoWriteParams::LampsDefaultOn

Gibt an, ob die Lampen des Objektes (soweit vorhanden) standardmäßig eingeschaltet sein sollen, wenn das Objekt in ArCon geladen wird.

Eigenschaft:

Typ: Boolean

Standardwert: False

IAcoWriteParams::HasGravity

Gibt an, ob das Objekt fallen soll, wenn dieses in ArCon geladen wird.

Eigenschaft:

Typ: Boolean

Standardwert: False

IAcoWriteParams::GravityUp

Gibt an, ob das Objekt nach oben oder nach unten fallen soll, wenn dieses in ArCon geladen wird.

Eigenschaft:

Typ: Boolean

Standardwert: False (nach unten)

IAcoWriteParams::GravityDefaultOn

Gibt an, ob das Objekt standardmäßig fallen soll, wenn dieses in ArCon geladen wird.

Eigenschaft:

Typ: Boolean

Standardwert: False

IAcoWriteParams::DisplayTurn

Wenn Sie diese Eigenschaft auf true setzen, wird das Objekt beim Laden um 180 Grad gedreht. Dies ist eine Kompatibilitätsoption gegenüber älteren ArCon-Versionen, die Sie ignorieren könen.

Eigenschaft:

Typ: Boolean

Standardwert: False

Beispiele

Hier finden Sie einige Beispiele zur Verwendung des o2c-Constructors. Sie brauchen dazu einen korrekt installierten o2c-Player und o2c-Constructor.

Parcel Beispiel für die Verwendung von ILabel

Wand Beispiel für die Verwendung von IObjectConstructor, IMaterial, IO2cWriteParams und IAcoWriteParams

Material Testen Sie die Auswirkungen verschiedener Materialparameter.

Delphi Wanderzeugung

Beispiel für die Verwendung von IObjectConstructor und IMaterial mit Borland Delphi. Das Beispiel wurde mit der Version 4 der Entwicklungsumgebung von Borland erstellt. Es sollte jedoch auf allen Versionen ab Delphi 2 lauffähig sein.

MFC Wanderzeugung Beispiel für die Verwendung von IObjectConstructor und IMaterial mit VisualC++ 6.

Page 20 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

Last update: 04/10/2011 03:22:36

Quelltext: Dieser Quelltext benutzt Funktionen aus der Datei "o2cproxy.js", die Sie hier finden. Diese Datei dient dazu, Aufrufe des o2c-Players und des o2c-Constructors für Netscape und Internet Explorer zu Kapseln. Falls Sie diese Datei im Internet benutzen wollen, entfernen Sie bitte vorher alle nicht benötigten Funktionen und Kommentare, da diese Datei doch recht groß ist.

Den gesamten Quelltext inklusive der Objekte finden Sie hier als Zip-Datei. Zum Öffnen benötigen Sie ein entsprechendes Entpack-Programm wie z.B. Winzip.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Online Texturen erzeugen</title> <script language="JavaScript" src="o2cproxy.js" type="text/javascript"></script> <script Language="JavaScript"><!-- function createBlende(str, x, y, z) { // Name der Textur: theSignTex = ">dynamic\\sign_text.bmp" // Constructor mit o2c-Plater verbinden: document.theCnstr.SetPlayer(document.thePlayer); // Neues Label-Objekt erzeugen: theLabel = document.theCnstr.NewLabel(); // Eigenschaften setzen: labelSetAlignment(theLabel, 0); labelSetvAlign(theLabel, 0); labelSetWordWrap(theLabel, true); labelSetCaption(theLabel, str); labelSetWidth(theLabel, 512); labelSetHeight(theLabel, 512); labelSetLeft(theLabel, 10); labelSetTop(theLabel, 20); labelSetBorderStyle(theLabel, 0); labelSetBackColor(theLabel, RGB(255,255,255)); labelSetForeColor(theLabel, RGB(255, 0, 0)); labelSetBorderColor(theLabel, RGB(0, 255, 0)); labelSetFontSize(theLabel, 48); labelSetFontItalic(theLabel, false); labelSetFontBold(theLabel, false); // Textur erzeugen: theLabel.CreateTexture(RGB(255, 255, 255), 512, 512, theSignTex); // Textur in Player einfuegen: document.thePlayer.ReplaceTexture(2, theSignTex); } //--></script> <link rel="Stylesheet" href="area.css"> </head> <body> <a href="parcel.o2c"></a> <table width="100%" class="bordered" cellspacing="0" cellpadding="0"> <tr> <td class="oben" height="25"><b class="mitte"><img src="box_bright.png" width="15" height="15" hspace="15" border="0" alt="">Parcel</b></td> </tr> </table> <br><br> <div align="center"> <!-- o2c - player einbinden: //-->< <object classid = "CLSID:B1953AD6-C50E-11d3-B020-00A0C9251384" codebase = "http://www.o2c.de/download/o2cplayer.cab#version=1,9,9,135" title = "Wenn Sie hier kein 3D Objekt sehen, surfen Sie zu www.o2c.de und installieren Sie den O2C-Player!" width = "400" height = "300" name = "thePlayer">

Visual Basic Wanderzeugung

Beispiel für die Verwendung von IObjectConstructor und IMaterial mit Visual Basic.

Parcel

Karl Mustermann Musterweg 13 12346 Musterdorf

Namenszug erzeugen

Page 21 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

<param name = "BackColor" value = "16777215"> <param name = "ObjectURL" value = "parcel.o2c"> <param name = "Phi" value = "272.682129"> <param name = "Psi" value = "58.514851"> <param name = "BorderStyle" value = "1"> <param name = "Appearance" value = "0"> <param name = "InhibitLocalTextures" value = "-1"> <embed codebase = "http://www.o2c.de/dl_plugin.htm" type = "application/x-o2c-object" width = "400" height = "300" name = "thePlayer" src = "parcel.o2c" param_BackColor = "16777215" param_Phi = "272.682129" param_Psi = "58.514851" param_InhibitLocalTextures = "-1" param_BorderStyle = 1 param_Appearance = 0> </embed> </object> <!-- o2c - constructor einbinden: //-->< <object classid = "CLSID:06293FDE-E099-48D1-BAF7-7ED9DFFB5513" codebase = "http://www.o2c.de/kremer/area/O2CAreas.CAB#version=1,0,1,13" name = "theCnstr" width = "1" height = "1"> <embed codebase = "http://www.o2c.de/dl_plugin.htm" type = "application/x-o2c-areas" name = "theCnstr" hidden> </object> <form> <textarea rows="3" name="T1" cols="25"> Karl Mustermann Musterweg 13 12346 Musterdorf </textarea><br> <input type="button" value="Namenszug erzeugen" onClick="createBlende(T1.value, 0.0, 0.0, 0.0)"> </form> <hr size="1"> </div> </body> </html>

Last update: 04/10/2011 03:22:36

Quelltext: Den gesamten Quelltext inklusive der Objekte finden Sie hier als Zip-Datei. Zum Öffnen benötigen Sie ein entsprechendes Entpack-Programm wie z.B. Winzip.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title>Einfaches Constructor Beispiel</title> <script Language="JavaScript"><!-- function RGB(r, g, b) { var col; col = r | (g << 8) | (b << 16); return col; } function CreateMauer() { // Constructor mit dem Player verbinden: document.theCnstr.SetPlayer(document.thePlayer); // Material erzeugen: loc_mat = document.theCnstr.NewMaterial(); loc_mat.AmbientCoefficient = 0.2; loc_mat.DiffuseCoefficient = 0.4; loc_mat.SpecularCoefficient = 0.4; loc_mat.DiffuseColor = RGB(255,255,255); loc_mat.SpecularColor = RGB(255,255,255);

Wand erzeugen

Mauer erzeugen

Page 22 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

loc_mat.Transparent = false; loc_mat.Flags = 1 + 16; // ACMATFL_ISTEXTURED | ACMATFL_TWOSIDED // Neuen Objekt-Constructor erzeugen: constr = document.theCnstr.NewConstructor(0, 105); // Punkte der vorderen Wand setzen (Punktnummer, x, y, z, u, v): constr.SetPoint(0, -2, 0.1, 2, 0.0, 0.0); constr.SetPoint(1, 2, 0.1, 2, 0.0, 1.0); constr.SetPoint(2, 2, 0.1, -2, 1.0, 1.0); constr.SetPoint(3, -2, 0.1, -2, 1.0, 0.0); // Punkte des vorderen Loches (Fensters) setzen (Lochnummer, Punktnummer, x, y, z, u, v): constr.SetHolePoint(1, 0, -1, 0.1, 1, 0.25, 0.25); constr.SetHolePoint(1, 1, 1, 0.1, 1, 0.25, 0.75); constr.SetHolePoint(1, 2, 1, 0.1, -1, 0.75, 0.75); constr.SetHolePoint(1, 3, -1, 0.1, -1, 0.75, 0.25); // Polygon hinzufügen (SharpEdges, Snap, Material, Texturname): constr.AddPolygonWithHoles(true, false, loc_mat, "sign_tex.jpg"); // Usw. für jede Seite der Wand (Links, rechts, oben, unten und hinten) // ... // Zum Schluß Objekt schließen: objNo = constr.Finish("wand.o2c", 0); // Objekt anzeigen: document.thePlayer.CurrentObject = objNo; document.thePlayer.ObjectShow(true); // Objekt-Attribute erstellen: objectParams = document.theCnstr.NewAcoWriteParams(); objectParams.LogName = "The Wall"; o2cParams = document.theCnstr.NewO2CSaveParams(); o2cParams.CreatePreview = true; o2cParams.CombineTextures = true; o2cParams.CombineMaterials = true; o2cParams.MayBeRepublished = true; // Objekt als o2c speichern, dazu müssen die dlls aco2c.dll und acvisu.dll in Reichweite des O2CAreaConstructor-Ocx' liegen: document.theCnstr.ExportObjectAsO2C(objNo, "c:\\wand.o2c", o2cParams, objectParams); } //--></script> <link rel="Stylesheet" href="area.css"> </head> <body> <a href="test01.o2c"></a><a href="sign_tex.jpg"></a> <table width="100%" class="bordered" cellspacing="0" cellpadding="0"> <tr> <td class="oben" height="25"><b class="mitte"><img src="box_bright.png" width="15" height="15" hspace="15" border="0" alt="">Wand erzeugen</b></td> </tr> </table> <br><br> <div align="center"> <!-- o2c - player einbinden: //-->< <object classid = "CLSID:B1953AD6-C50E-11d3-B020-00A0C9251384" codebase = "http://www.o2c.de/download/o2cplayer.cab#version=1,9,9,135" title = "Wenn Sie hier kein 3D Objekt sehen, surfen Sie zu www.o2c.de und installieren Sie den O2C-Player!" width = "400" height = "300" name = thePlayer> <param name = "BackColor" value = "16777215"> <param name = "ObjectURL" value = "test01.o2c"> <param name = "Phi" value = "272.682129"> <param name = "Psi" value = "58.514851"> <param name = "InhibitLocalTextures" value = "true"> <param name = "TextureBaseURL" value = "."> <param name = "BorderStyle" value = "1"> <param name = "Appearance" value = "0"> <param name = "Filter" value = "0"> <embed codebase = "http://www.o2c.de/dl_plugin.htm" type = "application/x-o2c-object" width = "512" height = "512" name = "thePlayer" src = "test01.o2c" param_BackColor = "16777215" param_Phi = "272.682129" param_Psi = "58.514851" param_InhibitLocalTextures = "true" param_TextureBaseURL = "." param_BorderStyle = 1 param_Appearance = 0 param_Filter = 0> </embed> </object> <!-- o2c - constructor einbinden: //-->< <object classid = "CLSID:06293FDE-E099-48D1-BAF7-7ED9DFFB5513" codebase = "http://www.o2c.de/kremer/area/O2CAreas.CAB#version=1,0,1,13" name = "theCnstr" width = "1" height = "1"> <embed codebase = "http://www.o2c.de/dl_plugin.htm" type = "application/x-o2c-areas" name = "theCnstr" hidden> </object> <form> <input type="button" value="Mauer erzeugen" onClick="CreateMauer()"> </form> <hr size="1"> </div> <body> </html>

Page 23 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm

Last update: 04/10/2011 03:22:36

Hier können Sie die Auswirkungen der verschiedenen Materialparameter testen.

Erstellen Sie hier den Quelltext, um ein entsprechendes IMaterial-Objekt zu erzeugen:

Quelltext: Den gesamten Quelltext inklusive der Objekte finden Sie hier als Zip-Datei. Zum Öffnen benötigen Sie ein entsprechendes Entpack-Programm wie z.B. Winzip.

Last update: 04/10/2011 03:22:36

Materialeigenschaften setzen

AmbientCoefficient: (Wertebereich: 0.0 - 1.0) 0.5

DiffuseCoefficient: (Wertebereich: 0.0 - 1.0) 0.5

DiffuseColor, roter Anteil: (Wertebereich: 0 - 255) 255

DiffuseColor, grüner Anteil: (Wertebereich: 0 - 255) 255

DiffuseColor, blauer Anteil: (Wertebereich: 0 - 255) 255

Flags:

Texturiert Masken-Textur Selbstleuchtend Material und Textur mischen Zweiseitig Textur ist Reflektionsmaske Das Material reflektiert ideal

gfedcb

gfedc

gfedc

gfedc

gfedc

gfedc

gfedc

HighlightExponent: (Wertebereich: 0.0 - 1.0) 0.0

SpecularCoefficient: (Wertebereich: 0.0 - 1.0) 0.0

SpecularColor, roter Anteil: (Wertebereich: 0 - 255) 255

SpecularColor, grüner Anteil: (Wertebereich: 0 - 255) 255

SpecularColor, blauer Anteil: (Wertebereich: 0 - 255) 255

Transparency: (Wertebereich: 0.0 - 1.0) 0.0

Transparenz: Einschalten (nur für IMaterial) gfedc

Anwenden

Quelltext erzeugen

Page 24 of 24o2c - Constructor

10/4/2011file://C:\Documents and Settings\Bruno\Configurações locais\Temp\~hhFB94.htm