Ejemplo n.º 1
0
        // private Bitmap ScaleImage(Bitmap srcImage, float scale)
        // {
        //     int sourceWidth = srcImage.Width;
        //     int sourceHeight = srcImage.Height;
        //     int sourceX = 0;
        //     int sourceY = 0;

        //     int destX = 0;
        //     int destY = 0;
        //     int destWidth = (int)(srcImage.Width * scale);
        //     int destHeight = (int)(srcImage.Height * scale);

        //     if (srcImage.PixelFormat == PixelFormat.Format32bppArgb)
        //         for (int y = 0; y < srcImage.Height; y++)
        //             for (int x = 0; x < srcImage.Width; x++)
        //             {
        //                 Color c = srcImage.GetPixel(x, y);
        //                 srcImage.SetPixel(x, y, Color.FromArgb(255, c.R, c.G, c.B));
        //             }

        //     Bitmap scaledImage = new Bitmap(destWidth, destHeight,
        //                              PixelFormat.Format24bppRgb);

        //     scaledImage.SetResolution(96.0f, 96.0f);

        //     Graphics grPhoto = Graphics.FromImage(scaledImage);
        //     grPhoto.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Low;

        //     grPhoto.DrawImage(srcImage,
        //         new Rectangle(destX, destY, destWidth, destHeight),
        //         new Rectangle(sourceX, sourceY, sourceWidth, sourceHeight),
        //         GraphicsUnit.Pixel);

        //     grPhoto.Dispose();
        //     return scaledImage;
        // }

        public SculptMesh SculptMeshFromFile(string fileName, SculptType sculptType, int lod, bool viewerMode)
        {
            Bitmap     bitmap     = (Bitmap)Bitmap.FromFile(fileName);
            SculptMesh sculptMesh = new SculptMesh(bitmap, sculptType, lod, viewerMode);

            bitmap.Dispose();
            return(sculptMesh);
        }
Ejemplo n.º 2
0
 public SculptMesh(SculptMesh sm)
 {
     coords      = new List <Coord>(sm.coords);
     faces       = new List <Face>(sm.faces);
     viewerFaces = new List <ViewerFace>(sm.viewerFaces);
     normals     = new List <Coord>(sm.normals);
     uvs         = new List <UVCoord>(sm.uvs);
 }
Ejemplo n.º 3
0
 public SculptMesh(SculptMesh sm)
 {
     coords = new List<Coord>(sm.coords);
     faces = new List<Face>(sm.faces);
     viewerFaces = new List<ViewerFace>(sm.viewerFaces);
     normals = new List<Coord>(sm.normals);
     uvs = new List<UVCoord>(sm.uvs);
 }
Ejemplo n.º 4
0
        // private Bitmap ScaleImage(Bitmap srcImage, float scale)
        // {
        //     int sourceWidth = srcImage.Width;
        //     int sourceHeight = srcImage.Height;
        //     int sourceX = 0;
        //     int sourceY = 0;

        //     int destX = 0;
        //     int destY = 0;
        //     int destWidth = (int)(srcImage.Width * scale);
        //     int destHeight = (int)(srcImage.Height * scale);

        //     if (srcImage.PixelFormat == PixelFormat.Format32bppArgb)
        //         for (int y = 0; y < srcImage.Height; y++)
        //             for (int x = 0; x < srcImage.Width; x++)
        //             {
        //                 Color c = srcImage.GetPixel(x, y);
        //                 srcImage.SetPixel(x, y, Color.FromArgb(255, c.R, c.G, c.B));
        //             }

        //     Bitmap scaledImage = new Bitmap(destWidth, destHeight,
        //                              PixelFormat.Format24bppRgb);

        //     scaledImage.SetResolution(96.0f, 96.0f);

        //     Graphics grPhoto = Graphics.FromImage(scaledImage);
        //     grPhoto.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Low;

        //     grPhoto.DrawImage(srcImage,
        //         new Rectangle(destX, destY, destWidth, destHeight),
        //         new Rectangle(sourceX, sourceY, sourceWidth, sourceHeight),
        //         GraphicsUnit.Pixel);

        //     grPhoto.Dispose();
        //     return scaledImage;
        // }

        public SculptMesh SculptMeshFromFile(string fileName, SculptType sculptType, int lod, bool viewerMode)
        {
            Bitmap bitmap = (Bitmap)Bitmap.FromFile(fileName);
            SculptMesh sculptMesh = new SculptMesh(bitmap, sculptType, lod, viewerMode);
            bitmap.Dispose();
            return sculptMesh;
                    }
Ejemplo n.º 5
0
        // partly from OpenSim.Region.Physics.Meshing
        public static SculptMesh ToSculptMesh(byte[] sculptData, Primitive.SculptData sculptDataIn, string sculptDataString)//( Vector3 size, Quaternion Rotation)
        {
            SculptMesh sculptMesh;
            if (sculptData == null || sculptData.Length == 0)
            {
                Error("[PHYSICS]: Missing Sclupt Data ", sculptDataString);
                return null;
            }

            System.Drawing.Image idata = null;

            try
            {
                OpenMetaverse.Imaging.ManagedImage managedImage;  // we never use this
                if (!OpenMetaverse.Imaging.OpenJPEG.DecodeToImage(sculptData, out managedImage, out idata))
                {
                    Error("[PHYSICS]: OpenMetaverse.Imaging.OpenJPEG.DecodeToImage failed ", sculptDataString);
                    return null;
                }

            }
            catch (DllNotFoundException)
            {
                Error(
                    "[PHYSICS]: OpenJpeg is not installed correctly on this system. Physics Proxy generation failed.  Often times this is because of an old version of GLIBC.  You must have version 2.4 or above!",
                    sculptDataString);
                return null;
            }
            catch (IndexOutOfRangeException e)
            {
                Error("[PHYSICS]: OpenJpeg was unable to decode this.   Physics Proxy generation failed " + e, sculptDataString);
                return null;
            }
            catch (Exception e)
            {
                Error("[PHYSICS]: Unable to generate a Sculpty physics proxy.  Sculpty texture decode failed! " + e, sculptDataString);
                return null;
            }

            SculptMesh.SculptType sculptType;

            switch (sculptDataIn.Type)
            {
                case OpenMetaverse.SculptType.Cylinder:
                    sculptType = SculptMesh.SculptType.cylinder;
                    break;
                case OpenMetaverse.SculptType.Plane:
                    sculptType = SculptMesh.SculptType.plane;
                    break;
                case OpenMetaverse.SculptType.Torus:
                    sculptType = SculptMesh.SculptType.torus;
                    break;
                case OpenMetaverse.SculptType.Sphere:
                default:
                    sculptType = SculptMesh.SculptType.sphere;
                    break;
            }
            if (idata == null)
            {
                Error("[PHYSICS]: IData Null " , sculptDataString);
                return null;
            }
            sculptMesh = new SculptMesh((System.Drawing.Bitmap)idata, sculptType, (int)32, false, sculptDataIn.Mirror, sculptDataIn.Invert);

            idata.Dispose();

            //    sculptMesh.DumpRaw(baseDir, primName, "primMesh");
            return sculptMesh;
        }