Hallo alle zusammen,
kennt vielleicht jemand einen kostenlosen konverter, um MAX oder 3DS Files nach X oder FBX Files zu konvertieren?
mfg.
markus111
Hi,
Blender soll viele Import- und Exportformate kennen.
MfG
Manu32
Wenn Blender ein Formatnicht unterstützt kann man ihn auch mit PlugIns erweitern.
Gruß pdelvo
Ja, wollt ich auch schon. Nur Blender, und anscheint auch kein Plugin unterstützt MAX.
Oder gibt es doch eins?
Jopp, da hab ichs her. Und was anderes?
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
egrath's Blog: http://egonrath.eg.funpic.de/wordpress
Für 3DS Max gibt es noch den Panda DirectX Exporter. Der kann jedoch nur ins X-Format exportieren.
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
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
egrath's Blog: http://egonrath.eg.funpic.de/wordpress
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!!
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
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