# Visualisierung



## serkosum (19. Sep 2007)

Hallo Community,

ich überlege in Java3D einzusteigen. Vorher hoffe ich, dass mir einige von euch ein paar Fragen beantworten können, damit ich nicht auf dem falschen Weg bin.

Also ich habe technische 3d Zeichnungen im Dateiformat 3ds und wollte diese mit Java3D visualisieren mit Hilfe des ObjectLoaders von Starfire, um diese E-Mail-artig z.B. an Kunden weiterzuschicken. Das Problem ist, die Kunden sollten keine Gelegenheit haben diese 3ds Datei aus der Applikation bzw. Anwendung herauszufiltern oder auch mit irgendwelchen Hilfsprogrammen die Maße des Objektes in der Zeichnung nachzumessen. Die Sicherheit ist nunmal sehr wichtig. 
Gewährleistet JAVA3d mir sowas oder gibt es noch eine andere Möglichkeit. Wäre dankbar für eine komponente Antwort, da ich sonst anderweitig schauen müsste.

gruß
serkosum


----------



## Evil-Devil (20. Sep 2007)

Sobald du etwas verschickst, kann der Kunde immer irgendwie an die Daten gelangen. Einzige Möglichkeit die mir einfällt es halbwegs sicher zu gestalten wäre über ein Applet und die Daten dann die Polygondaten OnDemand zu übertragen.


----------



## tuxedo (20. Sep 2007)

Du könntest dir auch etwas schreiben das das 3DS Format einließt und Beispielsweise ein Objekt packt. Das serialisierst du dann und speicherst es als File.

Mit Hilfe einem eigenen Viewer liest du dann dein eigenes Format und zeigst es an. 

Wenn du kein allzu einfaches Format innerhalb deines eigenen serialisierten Objekts wählst und die Klassen im Viewer noch mit einem obfuscator (such mal im forum nach dem wort) behandelst, dann bist du schon auch einer recht sicheren Seite. So einfach lässt sich dann kein 3DS-Format mehr draus machen.

- Alex


----------



## Marco13 (20. Sep 2007)

Wenn die Daten übertragen werden, kann man sie auch auslesen. Notfalls lötet man ein Kabel an die Telefonbuchse und zieht sich die Bytes einzeln raus ... Es bleibt bestenfalls, so wenig verwertbare Information wie möglich zu übertragen. Z.B. Bilder. Die Sachen werden serverseitig gerendert, und dann nurnoch Bilddaten übertragen. Ob sowas für deinen Fall angebracht ist, weiß ich nicht. Java3D unterstützt das nicht direkt, aber man könnte sowas wohl mit relativ(!) wenig Aufwand nachbauen.


----------



## tuxedo (21. Sep 2007)

Klar, 100%ig lässt sich nix schützen. Mit viel Aufwand kann man es dem Raubkopierer auch schwer genug machen. Man muss nur abwägen wo die Grenze zwischen Aufwand und Nutzen liegt.

Gehen wir mal von einer einzigen JAR File aus.
Darin ist beispielsweise ein Viewer drin, der ein eigenes Dateiformat abspielen/anzeigen kann. Dieses eigene Dateiformat ist kann ja beliebig "kompliziert" sein und auf nicht lesbarer (soll heießn nicht xml etc.) byte-ebene kodiert sein.
Die Klassen die das Format lesen können auch beliebig "kompliziert" gestrickt sein. Nach dem "obfuscator" Vorgang sind die Klassen auch nach dem compilieren nicht wirklich zu gebrauchen. Wenn man dann noch komplizierten Code gestrickt hat ist es schon richtig aufwendig die decompilierten, völlig verstümmelten Klassen zu rekonstruieren und zu benutzen. 

Wenn das Dateiformat für den Viewer also nicht gerade lapidar einfach ist, dann hat man somit mehrere Schutzmechanismen:

1) Code auch nach dem decompilieren nicht ohne großen Aufwand lesbar -> obfuscator
2) Eigenes Dateiformat: Der, der da dran will, muss erstmal verstehen und reverse engineeren wie das Dateiformat aufgebaut ist und das dann selbst nachbilden
3) Für das braucht man schon einiges an fähigkeiten und wissen. Wenn der Kunde keine Programmierer beschäftigt oder welche dafür anstellt, dann beißt er sich die Zähne aus.


- Alex


----------



## Guest (24. Sep 2007)

vielen Dank für eure Antworten. Habe es jetzt geschafft mit Hilfe des 3ds loaders  von Starfire eine Programm zu erstellen das mein 3d Object als Applikation anzeigt.
Also habe ich jetzt folgende Dateien:

3dloader.java
3dloader.class
Object.3ds

Mir ist es unwichtig, ob jemand meine Code auslesen kann, sonder eher das die Object.3ds Datei nicht herausgefiltert werden kann. 
Möchte jetzt nicht auf ein irrweg geraten, sondern richtig weitergehen. 
Also zusammengefasst:

Meine einzige Möglichkeit die Dateien zu packen und dem Kunden zu schicken ist die Erstellung einer jar.Datei.
Kann die jar Datei dann auf Rechnern ohne java3d Api ausgeführt werden und muss ich zusätzlich noch etwas beachten.

Wäre dankbar für weitere Antworten, habe noch Semesterferien und wollte mich bis zum Ende noch mit dem Thema beschäftigen.

gruß
Serkan


----------



## tuxedo (24. Sep 2007)

Ähm, wenn du die Object.3ds in eine JAR steckst, kann kan diese ohne schwierigkeiten binnen Sekunden mit Unzip/Winrar/... extrahieren. 

Hattest du nicht zu Beginn das Wort "Sicherheit" groß geschrieben?
Oder hab ich da jetzt was verpasst?

Die Sache mit dem Code auslesen: Deine 3DS-Datei ist nur so sicher wie dein Code... D.h. wenn du die 3DS verschlüsselst, in ein eigenes Format verpackst oder sie sonst irgendwie verstümmelst: Dein Code ist die Anleitung um die "Sicherheit"s-Funktion zu umgehen.

ALso ist dein Code nicht ganz unwichtig. Einen Obfuscator würde ich auf jeden Fall einsetzen. Kostet dich nur wenige Minuten ...

- Alex


----------

