コード例 #1
0
ファイル: ObjExporter.cs プロジェクト: alienwow/OBJExport
        /// <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);
        }
コード例 #2
0
ファイル: ObjExporter.cs プロジェクト: alienwow/OBJExport
        /// <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);
        }