Laden...

*.max oder *.3ds nach *.x oder *.fbx konvertieren

Erstellt von markus111 vor 15 Jahren Letzter Beitrag vor 13 Jahren 5.968 Views
markus111 Themenstarter:in
479 Beiträge seit 2008
vor 15 Jahren
*.max oder *.3ds nach *.x oder *.fbx konvertieren

Hallo alle zusammen,

kennt vielleicht jemand einen kostenlosen konverter, um MAX oder 3DS Files nach X oder FBX Files zu konvertieren?

mfg.
markus111

[Follow me on Twitter](http://twitter.com/blendingsky)
M
4 Beiträge seit 2008
vor 15 Jahren

Hi,

Blender soll viele Import- und Exportformate kennen.

MfG
Manu32

1.346 Beiträge seit 2008
vor 15 Jahren

Wenn Blender ein Formatnicht unterstützt kann man ihn auch mit PlugIns erweitern.

Gruß pdelvo

markus111 Themenstarter:in
479 Beiträge seit 2008
vor 15 Jahren

Ja, wollt ich auch schon. Nur Blender, und anscheint auch kein Plugin unterstützt MAX.
Oder gibt es doch eins?

[Follow me on Twitter](http://twitter.com/blendingsky)
1.346 Beiträge seit 2008
vor 15 Jahren

Glaub nicht. Siehe hier.

Gruß pdelvo

markus111 Themenstarter:in
479 Beiträge seit 2008
vor 15 Jahren

Jopp, da hab ichs her. Und was anderes?

[Follow me on Twitter](http://twitter.com/blendingsky)
871 Beiträge seit 2005
vor 15 Jahren

Hallo,

Autodesk selbst bietet einen Converter an, der 3DS, OBJ und DXF nach FBX konvertieren kann:

http://usa.autodesk.com/adsk/servlet/index?siteID=123112&id=10775855

Grüße,
Egon

47 Beiträge seit 2007
vor 15 Jahren

Für 3DS Max gibt es noch den Panda DirectX Exporter. Der kann jedoch nur ins X-Format exportieren.

http://www.andytather.co.uk/Panda/directxmax_downloads.aspx

S
401 Beiträge seit 2008
vor 15 Jahren

Servus,

ich suche zur Zeit einen Konverter für *.max und *.3ds, der auch mit OpenGL arbeiten kann. Ich bräuchte den für ein Projekte (License: BSD) und das ganze soll auf Mono oder C++ laufen.

Gruß,
Thomas

871 Beiträge seit 2005
vor 15 Jahren

Hallo,

ein Konverter hat grundsätzlich mal nichts mit OpenGL, DirectX oder irgend einer anderen 3D API zu tun - der konvertiert ja nur von einem Datenformat in ein anderes. Ich denke was Du suchst ist eine möglichkeit mit den in den Geometrie-Files gespeicherten Daten weiterzuarbeiten, oder?

Bin zwar mit OpenGL nicht so fit, doch denke ich dass es sicherlich schon fertige Libraries geben wird welche alle möglichen Formate lesen und das ganze in ein VBO (Vertex Buffer Object) oder eine andere Datenstruktur bringen. Bei einer schnellen Suche nach "OpenGL load OBJ 3DS" in Google habe ich schon eine Menge links entdecken können die dir entsprechende Anhaltspunkte liefern 😃

Wenn Du eine gewisse Herausforderung suchst, kannst Du dir einen entsprechenden Importer für deine Datenstruktur auch mit einem gewissen Aufwand selbst schreiben. Wenn möglich würde ich dann als Ursprungsformat OBJ (also zuerst 3DS/MAX nach OBJ Konvertieren) wählen, da es relativ simpel aufgebaut ist (Vertices, Triangles, Materials, etc.).

Als guten Allround Konverter kann ich "3D Object Converter" empfehlen - der kostet zwar ein paar (wenige) Euros, kann dafür aber mit etlichen hunderten Formaten umgehen: http://web.axelero.hu/karpo/

Grüße,
Egon

O
33 Beiträge seit 2010
vor 13 Jahren

Hallo,

ich suche einen Konverter, der Pfade (B-Splines oder Bezier) aus 3ds Max sind eine txt kovertiert. Oder in ein anderes Format.

Der Hintergrund meiner Frag ist: ich möchte beliebige Pfade erstellen, in 3ds MAx, und die exportierte Datei dann in meinem C#-Code einlesen. Ich möchte in meinem Programm solch eine Klasse schreiben, die diese Pfade dann einliest. An diesen Pfaden möchte ich dann zb eine Box lang laufen lassen bzw. animieren. Jedoch weiss ich noch nicht aus welchem Dateiformat ich das am besten tue. Ich habe mal eine Kurve in MAX erstellt und diese dann in eine X-File, mittels Panda, exportiert. Wenn ich mir die Datei anschaue weiss ich jedoch nicht was ich da weiterverarbeiten kann. Hat jemand von euch sowas schonmal gemacht?

Vielen Dank im Voraus!!

5.657 Beiträge seit 2006
vor 13 Jahren

Da gibs mehrere Möglichkeiten:

  • Exportiere deine Splines in das DWG- bzw- DXF-Format (AutoCAD), dafür gibt es meiner Meinung nach auch einen Parser bei CodeProject oder sonstwo im Internet.

  • Schreib dir einen einfachen Exporter selbst mit MaxScript. Für solche Zwecke ist das relativ einfach, du gehst in einer Schleife alle Knoten der selektierten Splines ab und speicherst die Daten in einer Datei (oder gibst sie einfach im Listener aus).

Ich würde die letzte Variante vorziehen, weil du dabei das Ausgabeformat selbst bestimmten kannst und so einfach wie möglich gestalten kannst. Der Einstieg in MaxScript ist ziemlich einfach, weil jeder Befehl in 3ds max einem MaxScript-Befehl entspricht. Eine MaxScript-Referenz liegt auch im AutoDesk-Ordner.

Christian

Weeks of programming can save you hours of planning

O
33 Beiträge seit 2010
vor 13 Jahren

Hallo Christian,

danke Dir für die Antwort! Ich mache es jetzt ganz anders 😃. Ich möchte eine ASE-Datei mit folgendem Inhalt Parsen:

\*3DSMAX_ASCIIEXPORT	200
\*COMMENT "AsciiExport-Version  2,00 - Fri Oct 08 08:39:01 2010"
\*SCENE {
	*SCENE_FILENAME "jk.max"
	*SCENE_FIRSTFRAME 0
	*SCENE_LASTFRAME 100
	*SCENE_FRAMESPEED 30
	*SCENE_TICKSPERFRAME 160
	*SCENE_BACKGROUND_STATIC 0.0000	0.0000	0.0000
	*SCENE_AMBIENT_STATIC 0.0000	0.0000	0.0000
}
\*SHAPEOBJECT {
	*NODE_NAME "Linie01"
	*NODE_TM {
		*NODE_NAME "Linie01"
		*INHERIT_POS 0 0 0
		*INHERIT_ROT 0 0 0
		*INHERIT_SCL 0 0 0
		*TM_ROW0 1.0000	0.0000	0.0000
		*TM_ROW1 0.0000	1.0000	0.0000
		*TM_ROW2 0.0000	0.0000	1.0000
		*TM_ROW3 22.4222	20.6001	0.0000
		*TM_POS 22.4222	20.6001	0.0000
		*TM_ROTAXIS 0.0000	0.0000	0.0000
		*TM_ROTANGLE 0.0000
		*TM_SCALE 1.0000	1.0000	1.0000
		*TM_SCALEAXIS 0.0000	0.0000	0.0000
		*TM_SCALEAXISANG 0.0000
	}
	*SHAPE_LINECOUNT 1
	*SHAPE_LINE 0 {
		*SHAPE_VERTEXCOUNT 3
		*SHAPE_VERTEX_KNOT	0	-20.1490	53.7415	0.0000
		*SHAPE_VERTEX_KNOT	1	28.4945	27.9187	0.0000
		*SHAPE_VERTEX_KNOT	2	58.9210	-19.8598	0.0000
	}
}
\*SHAPEOBJECT {
	*NODE_NAME "Linie02"
	*NODE_TM {
		*NODE_NAME "Linie02"
		*INHERIT_POS 0 0 0
		*INHERIT_ROT 0 0 0
		*INHERIT_SCL 0 0 0
		*TM_ROW0 1.0000	0.0000	0.0000
		*TM_ROW1 0.0000	1.0000	0.0000
		*TM_ROW2 0.0000	0.0000	1.0000
		*TM_ROW3 0.1832	-6.7871	0.0000
		*TM_POS 0.1832	-6.7871	0.0000
		*TM_ROTAXIS 0.0000	0.0000	0.0000
		*TM_ROTANGLE 0.0000
		*TM_SCALE 1.0000	1.0000	1.0000
		*TM_SCALEAXIS 0.0000	0.0000	0.0000
		*TM_SCALEAXISANG 0.0000
	}
	*SHAPE_LINECOUNT 1
	*SHAPE_LINE 0 {
		*SHAPE_VERTEXCOUNT 3
		*SHAPE_VERTEX_KNOT	0	-42.3880	26.3542	0.0000
		*SHAPE_VERTEX_KNOT	1	6.2556	0.5314	0.0000
		*SHAPE_VERTEX_KNOT	2	36.6820	-47.2471	0.0000
	}
}

Ich möchte jedoch nur die Punkte der jeweiligen Linie haben, die ich angebe.Hier mein bisheriger Code:

    class Path
    {
        String f_name;
        String obj_name;
        List<Vector3> punkte = new List<Vector3>();

        private int line_num_obj_name = 0;
        private int line_num_shapeobj = 0;
        private int counterzahl = 0;
        private int gesamt_zeilen = 0;
        

        public Path()
        {
            this.f_name = "";
            this.obj_name = "";
            this.punkte = null;
        }

        public Path(String f_name, String obj_name)
        {
            this.f_name = f_name;
            this.obj_name = obj_name;
            this.punkte = null;
            Loadpath(f_name, obj_name);
        }

        public void Loadpath(String f_name, String obj_Name)
        {
            StreamReader stream = new StreamReader(f_name);
            string line = "";
            int gesamt_zeilen = 0;

            while ((line = stream.ReadLine()) != null)
            {
                gesamt_zeilen++;
            }

            try
            {
                while ((line = stream.ReadLine()) != null)
                {
                    counterzahl++;
                    //Console.WriteLine(counterzahl);
                    if (line.Contains(obj_Name))
                    {
                        line_num_obj_name = counterzahl;

                        for (int i = line_num_obj_name; i < gesamt_zeilen; i++)
                        {
                            if (line.Contains("*SHAPE_LINE 0"))
                            {
                                line_num_shapeobj = i;
                                Console.WriteLine(line_num_shapeobj);
                            }
                        }
                    }
                    Console.WriteLine(counterzahl);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Kein Objekt mit diesem Namen gefunden", e);
            }

        }

Also vorweg, mir ist klar, dass der Code wie er da ist nicht funktioniert. 😃 War nur ein Test. Ich komme leider nicht weiter. Ich brauche nur die Punkte eines Objektes aus der ASE Datei und möchte die in die Liste speichern. Ist bestimmt ne ganz blöde Kleinigkeit. Bin auch nicht gerade sehr Programmiererfahren aber möchte es werden.

Könnt ihr mir helfen?

Gruß,

Robbie