/// <summary> /// Write a new colour definition to the /// material library. /// Revit transparency lies between 0 and 100, /// where 100 is completely transparent and 0 /// opaque. In MTL, the transparency is written /// using either a 'd' or a 'Tr' statement with /// values ranging from 0.0 to 1.0, where 1.0 is /// opaque. /// </summary> static void EmitColorTransparency( StreamWriter s, int trgb) { // 透明度 int transparency; Color color = ObjExportUtil.IntToColorTransparency( trgb, out transparency); string name = ObjExportUtil.ColorTransparencyString( color, transparency); if (_more_transparent && 0 < transparency) { transparency = 100; } s.WriteLine(_mtl_newmtl_d, name, color.Red / 255.0, color.Green / 255.0, color.Blue / 255.0, (100 - transparency) / 100.0); }
/// <summary> /// Emit a Revit geometry Face object and /// return the number of resulting triangles. /// </summary> public int EmitFace(Element e, Face face, Color color, int transparency) { ++_faceCount; var objModel = new ObjModel() { UniqueId = e.UniqueId, Faces = new List <VFace>(), vt = new List <object>() }; _objModels.Add(objModel); // 保存每个实体的材质颜色 if (_add_color && _color_transparency_lookup.AddColorTransparency(color, transparency)) { // 设置材质颜色id string name = ObjExportUtil.ColorTransparencyString(color, transparency); objModel.Mtl = name; } Mesh mesh = face.Triangulate(0 / 15.0); //Mesh mesh = face.Triangulate(); #region 保存 Vertex 及 Triangle 数据 int numTriangles = mesh.NumTriangles; for (int i = 0; i < numTriangles; ++i) { ++_triangleCount; MeshTriangle meshTriangle = mesh.get_Triangle(i); StoreTriangle(meshTriangle, objModel); } #endregion return(numTriangles); }