Hi John, >Andreas, > >We started working on this but with an almost complete lack of >documentation it's basically trial and error (and I haven't >made much progress). If you've got more information about how Yes, it's trial and error... I spend the hole last night testing and after that fall in sleep with nightmares...
I have tested: 4*3 Matrix 3*4 Matrix 3*3 Matrix plus 3D vector and this three with and without moving the object to the origin before transforming. I'm using now a commercial software for the 3DS export... Regards Andreas >all this works I'd be glad to add support to our loader. > >- John Wright >Starfire Research > >Andreas Jerke wrote: >> >> Hi All, >> >> I have testet several importers for 3DS files and >> all don`t support correct reading of chunk 0x4160 . >> This chunk contains 12 float values describing an >> 4*3 matrix, with which all vertices of an object >> must be transformed. >> >> Most 3DS files exported from 3DSMax contain this chunk. >> >> Me problem is, that the objects in my imported 3DS scene >> are not in the correct position/scaling/rotation. >> >> I tried to implement this chunk in the >> org.opentools.java3d.ThreeDSProcessor.class , but I get >wrong results. >> >> Does anyone know how to transform all vertices with >> the matrix ? >> >> Does anyone know which 3DS importer supports 0x4160 ? >> >> Best regards, >> Andreas >> >> extension to org.opentools.java3d.ThreeDSProcessor from >> Aaron Mulder's 3DS Loader, >> http://www.j3d.org/utilities/loaders/3ds/mulder.html >> >> <schnipp> >> [...] >> >> case TYPE_MESH_MATRIX: >> //offset for this object ! >> float rmatrix[] = new float[16]; >> >> //read rotate/scale matrix >(CORRECT ORDER ???) >> rmatrix[0]=readFloat(); >> rmatrix[3]=readFloat(); >> rmatrix[6]=readFloat(); >> >> rmatrix[1]=readFloat(); >> rmatrix[4]=readFloat(); >> rmatrix[7]=readFloat(); >> >> rmatrix[2]=readFloat(); >> rmatrix[5]=readFloat(); >> rmatrix[8]=readFloat(); >> >> //read transformation vector >> Point3f trans = new >> Point3f(readFloat(),readFloat(),readFloat()); >> >> Matrix3f matrix = new Matrix3f(rmatrix); >> debug("Transform all vertices with matrix >> \n"+matrix); >> >> //center of current object, >calculated from >> bounding box (DO I NEED THIS ???) >> Point3f center = new Point3f( >> -((omaxx-ominx)/2+ominx), >> -((omaxy-ominy)/2+ominy), >> -((omaxz-ominz)/2+ominz) >> ); >> //transform all vertices, >BUGGY< >> for (int i=0; i<vertices.length; i++) { >> debug("before:"+vertices[i].toString()); >> vertices[i].add(center); >> matrix.transform(vertices[i]); >> vertices[i].add(trans); >> >> debug("after:"+vertices[i].toString()); >> } >> break; >> >> </schnapp> >> >> >====================================================================== >> ===== >> To unsubscribe, send email to [EMAIL PROTECTED] and >include in the body >> of the message "signoff JAVA3D-INTEREST". For general help, >send email to >> [EMAIL PROTECTED] and include in the body of the message "help". > >=============================================================== >============ >To unsubscribe, send email to [EMAIL PROTECTED] and >include in the body of the message "signoff JAVA3D-INTEREST". >For general help, send email to [EMAIL PROTECTED] and >include in the body of the message "help". > =========================================================================== To unsubscribe, send email to [EMAIL PROTECTED] and include in the body of the message "signoff JAVA3D-INTEREST". For general help, send email to [EMAIL PROTECTED] and include in the body of the message "help".