Blender.NMesh.GetRawFromObject through a displist conversion method as used by Blender when converting them in the UI. Notes: Objects with only edges (3D curves/polyline without bevel) do not have normals, so they are all initialised to (1, 0, 0) on conversion Converting from meta objects only work on the "mother ball". That is, the object with the lower base name. Example: "meta" for all the "meta.*" objects. Meshes extracted from curve based objects (Font/2D filled curves) contain both the filled surfaces and the outlines of the shapes. Materials are taken from the object's material list. Material handling in NMesh is incorrect anyway, as it always uses the materials from the mesh, ignoring the setting in ob->colbits. This patch also makes the include order a little clearer. A couple of warnings have been fixed by using better types: - Using char instead of short when parsing color values. The "constructor" expects and uses char anyway. - Explicit casting to short when storing normals back in mvert. - Changing constant doubles to floats with "f" to make compiler happy. The only warning left regards NMFace.flag which is stored as a short but is used to fill in TFace.flag which is a char. I didn't want to change the object's structure so I left it like that. I didn't add an explicit cast when putting it back in TFace so that the warning can remind us that there might be something to change there.