Exemplo n.º 1
0
 public static void lib3ds_file_insert_material(Lib3dsFile file, Lib3dsMaterial material, int index)
 {
     Debug.Assert(file != null);
     if (index < 0)
     {
         file.materials.Add(material);
     }
     else
     {
         file.materials.Insert(index, material);
     }
 }
Exemplo n.º 2
0
        // Creates and returns a new, empty Lib3dsMaterial object.
        //
        // Initial value of the material is a shiny grey.
        //
        // \return A pointer to the Lib3dsMaterial structure.
        //  If the structure cannot be allocated, NULL is returned.
        public static Lib3dsMaterial lib3ds_material_new(string name)
        {
            try
            {
                Lib3dsMaterial mat = new Lib3dsMaterial();

                if (name != null)
                {
                    mat.name = name;
                }
                else
                {
                    mat.name = "";
                }
                mat.ambient[0]  = mat.ambient[1] = mat.ambient[2] = 0.588235f;
                mat.diffuse[0]  = mat.diffuse[1] = mat.diffuse[2] = 0.588235f;
                mat.specular[0] = mat.specular[1] = mat.specular[2] = 0.898039f;
                mat.shininess   = 0.1f;
                mat.wire_size   = 1.0f;
                mat.shading     = 3;

                initialize_texture_map(mat.texture1_map);
                initialize_texture_map(mat.texture1_mask);
                initialize_texture_map(mat.texture2_map);
                initialize_texture_map(mat.texture2_mask);
                initialize_texture_map(mat.opacity_map);
                initialize_texture_map(mat.opacity_mask);
                initialize_texture_map(mat.bump_map);
                initialize_texture_map(mat.bump_mask);
                initialize_texture_map(mat.specular_map);
                initialize_texture_map(mat.specular_mask);
                initialize_texture_map(mat.shininess_map);
                initialize_texture_map(mat.shininess_mask);
                initialize_texture_map(mat.self_illum_map);
                initialize_texture_map(mat.self_illum_mask);
                initialize_texture_map(mat.reflection_map);
                initialize_texture_map(mat.reflection_mask);

                return(mat);
            }
            catch
            {
                return(null);
            }
        }
Exemplo n.º 3
0
		// Creates and returns a new, empty Lib3dsMaterial object.
		//
		// Initial value of the material is a shiny grey.
		//
		// \return A pointer to the Lib3dsMaterial structure.
		//  If the structure cannot be allocated, NULL is returned.
		public static Lib3dsMaterial lib3ds_material_new(string name)
		{
			try
			{
				Lib3dsMaterial mat=new Lib3dsMaterial();

				if(name!=null) mat.name=name;
				else mat.name="";
				mat.ambient[0]=mat.ambient[1]=mat.ambient[2]=0.588235f;
				mat.diffuse[0]=mat.diffuse[1]=mat.diffuse[2]=0.588235f;
				mat.specular[0]=mat.specular[1]=mat.specular[2]=0.898039f;
				mat.shininess=0.1f;
				mat.wire_size=1.0f;
				mat.shading=3;

				initialize_texture_map(mat.texture1_map);
				initialize_texture_map(mat.texture1_mask);
				initialize_texture_map(mat.texture2_map);
				initialize_texture_map(mat.texture2_mask);
				initialize_texture_map(mat.opacity_map);
				initialize_texture_map(mat.opacity_mask);
				initialize_texture_map(mat.bump_map);
				initialize_texture_map(mat.bump_mask);
				initialize_texture_map(mat.specular_map);
				initialize_texture_map(mat.specular_mask);
				initialize_texture_map(mat.shininess_map);
				initialize_texture_map(mat.shininess_mask);
				initialize_texture_map(mat.self_illum_map);
				initialize_texture_map(mat.self_illum_mask);
				initialize_texture_map(mat.reflection_map);
				initialize_texture_map(mat.reflection_mask);

				return mat;
			}
			catch
			{
				return null;
			}
		}
Exemplo n.º 4
0
		static void material_dump(Lib3dsMaterial material)
		{
			Debug.Assert(material!=null);

			Console.WriteLine("  name:            {0}", material.name);
			Console.WriteLine("  ambient:         ({0},{1},{2})", material.ambient[0], material.ambient[1], material.ambient[2]);
			Console.WriteLine("  diffuse:         ({0},{1},{2})", material.diffuse[0], material.diffuse[1], material.diffuse[2]);
			Console.WriteLine("  specular:        ({0},{1},{2})", material.specular[0], material.specular[1], material.specular[2]);
			Console.WriteLine("  shininess:       {0}", material.shininess);
			Console.WriteLine("  shin_strength:   {0}", material.shin_strength);
			Console.WriteLine("  use_blur:        {0}", material.use_blur?"yes":"no");
			Console.WriteLine("  blur:            {0}", material.blur);
			Console.WriteLine("  falloff:         {0}", material.falloff);
			Console.WriteLine("  is_additive:     {0}", material.is_additive?"yes":"no");
			Console.WriteLine("  use_falloff:     {0}", material.use_falloff?"yes":"no");
			Console.WriteLine("  self_illum_flag: {0}", material.self_illum_flag?"yes":"no");
			Console.WriteLine("  self_illum:      {0}", material.self_illum);
			Console.WriteLine("  shading:         {0}", material.shading);
			Console.WriteLine("  soften:          {0}", material.soften?"yes":"no");
			Console.WriteLine("  face_map:        {0}", material.face_map?"yes":"no");
			Console.WriteLine("  two_sided:       {0}", material.two_sided?"yes":"no");
			Console.WriteLine("  map_decal:       {0}", material.map_decal?"yes":"no");
			Console.WriteLine("  use_wire:        {0}", material.use_wire?"yes":"no");
			Console.WriteLine("  use_wire_abs:    {0}", material.use_wire_abs?"yes":"no");
			Console.WriteLine("  wire_size:       {0}", material.wire_size);
			texture_dump("texture1_map", material.texture1_map);
			texture_dump("texture1_mask", material.texture1_mask);
			texture_dump("texture2_map", material.texture2_map);
			texture_dump("texture2_mask", material.texture2_mask);
			texture_dump("opacity_map", material.opacity_map);
			texture_dump("opacity_mask", material.opacity_mask);
			texture_dump("bump_map", material.bump_map);
			texture_dump("bump_mask", material.bump_mask);
			texture_dump("specular_map", material.specular_map);
			texture_dump("specular_mask", material.specular_mask);
			texture_dump("shininess_map", material.shininess_map);
			texture_dump("shininess_mask", material.shininess_mask);
			texture_dump("self_illum_map", material.self_illum_map);
			texture_dump("self_illum_mask", material.self_illum_mask);
			texture_dump("reflection_map", material.reflection_map);
			texture_dump("reflection_mask", material.reflection_mask);
			Console.WriteLine("  autorefl_map:");
			Console.WriteLine("    flags          {0:X}", (ushort)material.autorefl_map_flags);
			Console.WriteLine("    level          {0}", material.autorefl_map_anti_alias);
			Console.WriteLine("    size           {0}", material.autorefl_map_size);
			Console.WriteLine("    frame_step     {0}", material.autorefl_map_frame_step);
			Console.WriteLine();
		}
Exemplo n.º 5
0
		public static void lib3ds_file_insert_material(Lib3dsFile file, Lib3dsMaterial material, int index)
		{
			Debug.Assert(file!=null);
			if(index<0) file.materials.Add(material);
			else file.materials.Insert(index, material);
		}
Exemplo n.º 6
0
 public static void lib3ds_material_free(Lib3dsMaterial material)
 {
 }
Exemplo n.º 7
0
        public static void lib3ds_material_write(Lib3dsMaterial material, Lib3dsIo io)
        {
            Lib3dsChunk c_mat_entry = new Lib3dsChunk();

            c_mat_entry.chunk = Lib3dsChunks.CHK_MAT_ENTRY;
            lib3ds_chunk_write_start(c_mat_entry, io);

            {             // ---- CHK_MAT_NAME ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_NAME;
                c.size  = 6 + (uint)material.name.Length + 1;
                lib3ds_chunk_write(c, io);
                lib3ds_io_write_string(io, material.name);
            }

            {             // ---- CHK_MAT_AMBIENT ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_AMBIENT;
                c.size  = 24;
                lib3ds_chunk_write(c, io);
                color_write(material.ambient, io);
            }

            {             // ---- CHK_MAT_DIFFUSE ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_DIFFUSE;
                c.size  = 24;
                lib3ds_chunk_write(c, io);
                color_write(material.diffuse, io);
            }

            {             // ---- CHK_MAT_SPECULAR ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_SPECULAR;
                c.size  = 24;
                lib3ds_chunk_write(c, io);
                color_write(material.specular, io);
            }

            {             // ---- CHK_MAT_SHININESS ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_SHININESS;
                c.size  = 14;
                lib3ds_chunk_write(c, io);
                int_percentage_write(material.shininess, io);
            }

            {             // ---- CHK_MAT_SHIN2PCT ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_SHIN2PCT;
                c.size  = 14;
                lib3ds_chunk_write(c, io);
                int_percentage_write(material.shin_strength, io);
            }

            {             // ---- CHK_MAT_TRANSPARENCY ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_TRANSPARENCY;
                c.size  = 14;
                lib3ds_chunk_write(c, io);
                int_percentage_write(material.transparency, io);
            }

            {             // ---- CHK_MAT_XPFALL ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_XPFALL;
                c.size  = 14;
                lib3ds_chunk_write(c, io);
                int_percentage_write(material.falloff, io);
            }

            if (material.use_falloff)
            {             // ---- CHK_MAT_USE_XPFALL ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_USE_XPFALL;
                c.size  = 6;
                lib3ds_chunk_write(c, io);
            }

            {             // ---- CHK_MAT_SHADING ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_SHADING;
                c.size  = 8;
                lib3ds_chunk_write(c, io);
                lib3ds_io_write_intw(io, (short)material.shading);
            }

            {             // ---- CHK_MAT_REFBLUR ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_REFBLUR;
                c.size  = 14;
                lib3ds_chunk_write(c, io);
                int_percentage_write(material.blur, io);
            }

            if (material.use_blur)
            {             // ---- CHK_MAT_USE_REFBLUR ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_USE_REFBLUR;
                c.size  = 6;
                lib3ds_chunk_write(c, io);
            }

            if (material.self_illum_flag)
            {             // ---- CHK_MAT_SELF_ILLUM ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_SELF_ILLUM;
                c.size  = 6;
                lib3ds_chunk_write(c, io);
            }

            if (material.two_sided)
            {             // ---- CHK_MAT_TWO_SIDE ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_TWO_SIDE;
                c.size  = 6;
                lib3ds_chunk_write(c, io);
            }

            if (material.map_decal)
            {             // ---- CHK_MAT_DECAL ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_DECAL;
                c.size  = 6;
                lib3ds_chunk_write(c, io);
            }

            if (material.is_additive)
            {             // ---- CHK_MAT_ADDITIVE ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_ADDITIVE;
                c.size  = 6;
                lib3ds_chunk_write(c, io);
            }

            if (material.use_wire)
            {             // ---- CHK_MAT_WIRE ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_WIRE;
                c.size  = 6;
                lib3ds_chunk_write(c, io);
            }

            if (material.use_wire_abs)
            {             // ---- CHK_MAT_WIREABS ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_WIREABS;
                c.size  = 6;
                lib3ds_chunk_write(c, io);
            }

            {             // ---- CHK_MAT_WIRE_SIZE ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_WIRE_SIZE;
                c.size  = 10;
                lib3ds_chunk_write(c, io);
                lib3ds_io_write_float(io, material.wire_size);
            }

            if (material.face_map)
            {             // ---- CHK_MAT_FACEMAP ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_FACEMAP;
                c.size  = 6;
                lib3ds_chunk_write(c, io);
            }

            if (material.soften)
            {             // ---- CHK_MAT_PHONGSOFT ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_PHONGSOFT;
                c.size  = 6;
                lib3ds_chunk_write(c, io);
            }

            texture_map_write(Lib3dsChunks.CHK_MAT_TEXMAP, material.texture1_map, io);
            texture_map_write(Lib3dsChunks.CHK_MAT_TEXMASK, material.texture1_mask, io);
            texture_map_write(Lib3dsChunks.CHK_MAT_TEX2MAP, material.texture2_map, io);
            texture_map_write(Lib3dsChunks.CHK_MAT_TEX2MASK, material.texture2_mask, io);
            texture_map_write(Lib3dsChunks.CHK_MAT_OPACMAP, material.opacity_map, io);
            texture_map_write(Lib3dsChunks.CHK_MAT_OPACMASK, material.opacity_mask, io);
            texture_map_write(Lib3dsChunks.CHK_MAT_BUMPMAP, material.bump_map, io);
            texture_map_write(Lib3dsChunks.CHK_MAT_BUMPMASK, material.bump_mask, io);
            texture_map_write(Lib3dsChunks.CHK_MAT_SPECMAP, material.specular_map, io);
            texture_map_write(Lib3dsChunks.CHK_MAT_SPECMASK, material.specular_mask, io);
            texture_map_write(Lib3dsChunks.CHK_MAT_SHINMAP, material.shininess_map, io);
            texture_map_write(Lib3dsChunks.CHK_MAT_SHINMASK, material.shininess_mask, io);
            texture_map_write(Lib3dsChunks.CHK_MAT_SELFIMAP, material.self_illum_map, io);
            texture_map_write(Lib3dsChunks.CHK_MAT_SELFIMASK, material.self_illum_mask, io);
            texture_map_write(Lib3dsChunks.CHK_MAT_REFLMAP, material.reflection_map, io);
            texture_map_write(Lib3dsChunks.CHK_MAT_REFLMASK, material.reflection_mask, io);

            {             // ---- CHK_MAT_ACUBIC ----
                Lib3dsChunk c = new Lib3dsChunk();
                c.chunk = Lib3dsChunks.CHK_MAT_ACUBIC;
                c.size  = 18;
                lib3ds_chunk_write(c, io);
                lib3ds_io_write_intb(io, 0);
                lib3ds_io_write_intb(io, (sbyte)material.autorefl_map_anti_alias);
                lib3ds_io_write_intw(io, (short)material.autorefl_map_flags);
                lib3ds_io_write_intd(io, material.autorefl_map_size);
                lib3ds_io_write_intd(io, material.autorefl_map_frame_step);
            }

            lib3ds_chunk_write_end(c_mat_entry, io);
        }
Exemplo n.º 8
0
        public static void lib3ds_material_read(Lib3dsMaterial material, Lib3dsIo io)
        {
            Lib3dsChunk  c = new Lib3dsChunk();
            Lib3dsChunks chunk;

            Debug.Assert(material != null);
            lib3ds_chunk_read_start(c, Lib3dsChunks.CHK_MAT_ENTRY, io);

            while ((chunk = lib3ds_chunk_read_next(c, io)) != 0)
            {
                switch (chunk)
                {
                case Lib3dsChunks.CHK_MAT_NAME:
                    material.name = lib3ds_io_read_string(io, 64);
                    lib3ds_io_log_indent(io, 1);
                    lib3ds_io_log(io, Lib3dsLogLevel.LIB3DS_LOG_INFO, "NAME={0}", material.name);
                    lib3ds_io_log_indent(io, -1);
                    break;

                case Lib3dsChunks.CHK_MAT_AMBIENT:
                    lib3ds_chunk_read_reset(c, io);
                    color_read(material.ambient, io);
                    break;

                case Lib3dsChunks.CHK_MAT_DIFFUSE:
                    lib3ds_chunk_read_reset(c, io);
                    color_read(material.diffuse, io);
                    break;

                case Lib3dsChunks.CHK_MAT_SPECULAR:
                    lib3ds_chunk_read_reset(c, io);
                    color_read(material.specular, io);
                    break;

                case Lib3dsChunks.CHK_MAT_SHININESS:
                    lib3ds_chunk_read_reset(c, io);
                    int_percentage_read(ref material.shininess, io);
                    break;

                case Lib3dsChunks.CHK_MAT_SHIN2PCT:
                    lib3ds_chunk_read_reset(c, io);
                    int_percentage_read(ref material.shin_strength, io);
                    break;

                case Lib3dsChunks.CHK_MAT_TRANSPARENCY:
                    lib3ds_chunk_read_reset(c, io);
                    int_percentage_read(ref material.transparency, io);
                    break;

                case Lib3dsChunks.CHK_MAT_XPFALL:
                    lib3ds_chunk_read_reset(c, io);
                    int_percentage_read(ref material.falloff, io);
                    break;

                case Lib3dsChunks.CHK_MAT_SELF_ILPCT:
                    lib3ds_chunk_read_reset(c, io);
                    int_percentage_read(ref material.self_illum, io);
                    break;

                case Lib3dsChunks.CHK_MAT_USE_XPFALL:
                    material.use_falloff = true;
                    break;

                case Lib3dsChunks.CHK_MAT_REFBLUR:
                    lib3ds_chunk_read_reset(c, io);
                    int_percentage_read(ref material.blur, io);
                    break;

                case Lib3dsChunks.CHK_MAT_USE_REFBLUR:
                    material.use_blur = true;
                    break;

                case Lib3dsChunks.CHK_MAT_SHADING:
                    material.shading = lib3ds_io_read_intw(io);
                    break;

                case Lib3dsChunks.CHK_MAT_SELF_ILLUM:
                    material.self_illum_flag = true;
                    break;

                case Lib3dsChunks.CHK_MAT_TWO_SIDE:
                    material.two_sided = true;
                    break;

                case Lib3dsChunks.CHK_MAT_DECAL:
                    material.map_decal = true;
                    break;

                case Lib3dsChunks.CHK_MAT_ADDITIVE:
                    material.is_additive = true;
                    break;

                case Lib3dsChunks.CHK_MAT_FACEMAP:
                    material.face_map = true;
                    break;

                case Lib3dsChunks.CHK_MAT_PHONGSOFT:
                    material.soften = true;
                    break;

                case Lib3dsChunks.CHK_MAT_WIRE:
                    material.use_wire = true;
                    break;

                case Lib3dsChunks.CHK_MAT_WIREABS:
                    material.use_wire_abs = true;
                    break;

                case Lib3dsChunks.CHK_MAT_WIRE_SIZE:
                    material.wire_size = lib3ds_io_read_float(io);
                    break;

                case Lib3dsChunks.CHK_MAT_TEXMAP:
                    lib3ds_chunk_read_reset(c, io);
                    texture_map_read(material.texture1_map, io);
                    break;

                case Lib3dsChunks.CHK_MAT_TEXMASK:
                    lib3ds_chunk_read_reset(c, io);
                    texture_map_read(material.texture1_mask, io);
                    break;

                case Lib3dsChunks.CHK_MAT_TEX2MAP:
                    lib3ds_chunk_read_reset(c, io);
                    texture_map_read(material.texture2_map, io);
                    break;

                case Lib3dsChunks.CHK_MAT_TEX2MASK:
                    lib3ds_chunk_read_reset(c, io);
                    texture_map_read(material.texture2_mask, io);
                    break;

                case Lib3dsChunks.CHK_MAT_OPACMAP:
                    lib3ds_chunk_read_reset(c, io);
                    texture_map_read(material.opacity_map, io);
                    break;

                case Lib3dsChunks.CHK_MAT_OPACMASK:
                    lib3ds_chunk_read_reset(c, io);
                    texture_map_read(material.opacity_mask, io);
                    break;

                case Lib3dsChunks.CHK_MAT_BUMPMAP:
                    lib3ds_chunk_read_reset(c, io);
                    texture_map_read(material.bump_map, io);
                    break;

                case Lib3dsChunks.CHK_MAT_BUMPMASK:
                    lib3ds_chunk_read_reset(c, io);
                    texture_map_read(material.bump_mask, io);
                    break;

                case Lib3dsChunks.CHK_MAT_SPECMAP:
                    lib3ds_chunk_read_reset(c, io);
                    texture_map_read(material.specular_map, io);
                    break;

                case Lib3dsChunks.CHK_MAT_SPECMASK:
                    lib3ds_chunk_read_reset(c, io);
                    texture_map_read(material.specular_mask, io);
                    break;

                case Lib3dsChunks.CHK_MAT_SHINMAP:
                    lib3ds_chunk_read_reset(c, io);
                    texture_map_read(material.shininess_map, io);
                    break;

                case Lib3dsChunks.CHK_MAT_SHINMASK:
                    lib3ds_chunk_read_reset(c, io);
                    texture_map_read(material.shininess_mask, io);
                    break;

                case Lib3dsChunks.CHK_MAT_SELFIMAP:
                    lib3ds_chunk_read_reset(c, io);
                    texture_map_read(material.self_illum_map, io);
                    break;

                case Lib3dsChunks.CHK_MAT_SELFIMASK:
                    lib3ds_chunk_read_reset(c, io);
                    texture_map_read(material.self_illum_mask, io);
                    break;

                case Lib3dsChunks.CHK_MAT_REFLMAP:
                    lib3ds_chunk_read_reset(c, io);
                    texture_map_read(material.reflection_map, io);
                    break;

                case Lib3dsChunks.CHK_MAT_REFLMASK:
                    lib3ds_chunk_read_reset(c, io);
                    texture_map_read(material.reflection_mask, io);
                    break;

                case Lib3dsChunks.CHK_MAT_ACUBIC:
                    lib3ds_io_read_intb(io);
                    material.autorefl_map_anti_alias = lib3ds_io_read_intb(io);
                    material.autorefl_map_flags      = (uint)lib3ds_io_read_intw(io);
                    material.autorefl_map_size       = lib3ds_io_read_intd(io);
                    material.autorefl_map_frame_step = lib3ds_io_read_intd(io);
                    break;

                default: lib3ds_chunk_unknown(chunk, io); break;
                }
            }

            lib3ds_chunk_read_end(c, io);
        }
Exemplo n.º 9
0
        static void mdata_read(Lib3dsFile file, Lib3dsIo io)
        {
            Lib3dsChunk  c = new Lib3dsChunk();
            Lib3dsChunks chunk;

            lib3ds_chunk_read_start(c, Lib3dsChunks.CHK_MDATA, io);

            while ((chunk = lib3ds_chunk_read_next(c, io)) != 0)
            {
                switch (chunk)
                {
                case Lib3dsChunks.CHK_MESH_VERSION: file.mesh_version = lib3ds_io_read_dword(io); break;

                case Lib3dsChunks.CHK_MASTER_SCALE: file.master_scale = lib3ds_io_read_float(io); break;

                case Lib3dsChunks.CHK_SHADOW_MAP_SIZE:
                case Lib3dsChunks.CHK_LO_SHADOW_BIAS:
                case Lib3dsChunks.CHK_HI_SHADOW_BIAS:
                case Lib3dsChunks.CHK_SHADOW_SAMPLES:
                case Lib3dsChunks.CHK_SHADOW_RANGE:
                case Lib3dsChunks.CHK_SHADOW_FILTER:
                case Lib3dsChunks.CHK_RAY_BIAS:
                    lib3ds_chunk_read_reset(c, io);
                    lib3ds_shadow_read(file.shadow, io);
                    break;

                case Lib3dsChunks.CHK_VIEWPORT_LAYOUT:
                case Lib3dsChunks.CHK_DEFAULT_VIEW:
                    lib3ds_chunk_read_reset(c, io);
                    lib3ds_viewport_read(file.viewport, io);
                    break;

                case Lib3dsChunks.CHK_O_CONSTS:
                    for (int i = 0; i < 3; i++)
                    {
                        file.construction_plane[i] = lib3ds_io_read_float(io);
                    }
                    break;

                case Lib3dsChunks.CHK_AMBIENT_LIGHT:
                    lib3ds_chunk_read_reset(c, io);
                    ambient_read(file, io);
                    break;

                case Lib3dsChunks.CHK_BIT_MAP:
                case Lib3dsChunks.CHK_SOLID_BGND:
                case Lib3dsChunks.CHK_V_GRADIENT:
                case Lib3dsChunks.CHK_USE_BIT_MAP:
                case Lib3dsChunks.CHK_USE_SOLID_BGND:
                case Lib3dsChunks.CHK_USE_V_GRADIENT:
                    lib3ds_chunk_read_reset(c, io);
                    lib3ds_background_read(file.background, io);
                    break;

                case Lib3dsChunks.CHK_FOG:
                case Lib3dsChunks.CHK_LAYER_FOG:
                case Lib3dsChunks.CHK_DISTANCE_CUE:
                case Lib3dsChunks.CHK_USE_FOG:
                case Lib3dsChunks.CHK_USE_LAYER_FOG:
                case Lib3dsChunks.CHK_USE_DISTANCE_CUE:
                    lib3ds_chunk_read_reset(c, io);
                    lib3ds_atmosphere_read(file.atmosphere, io);
                    break;

                case Lib3dsChunks.CHK_MAT_ENTRY:
                    Lib3dsMaterial material = lib3ds_material_new(null);
                    lib3ds_file_insert_material(file, material, -1);
                    lib3ds_chunk_read_reset(c, io);
                    lib3ds_material_read(material, io);
                    break;

                case Lib3dsChunks.CHK_NAMED_OBJECT:
                    lib3ds_chunk_read_reset(c, io);
                    named_object_read(file, io);
                    break;

                default: lib3ds_chunk_unknown(chunk, io); break;
                }
            }

            lib3ds_chunk_read_end(c, io);
        }
Exemplo n.º 10
0
		public static void lib3ds_material_free(Lib3dsMaterial material)
		{
		}
Exemplo n.º 11
0
		public static void lib3ds_material_write(Lib3dsMaterial material, Lib3dsIo io)
		{
			Lib3dsChunk c_mat_entry=new Lib3dsChunk();

			c_mat_entry.chunk=Lib3dsChunks.CHK_MAT_ENTRY;
			lib3ds_chunk_write_start(c_mat_entry, io);

			{ // ---- CHK_MAT_NAME ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_NAME;
				c.size=6+(uint)material.name.Length+1;
				lib3ds_chunk_write(c, io);
				lib3ds_io_write_string(io, material.name);
			}

			{ // ---- CHK_MAT_AMBIENT ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_AMBIENT;
				c.size=24;
				lib3ds_chunk_write(c, io);
				color_write(material.ambient, io);
			}

			{ // ---- CHK_MAT_DIFFUSE ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_DIFFUSE;
				c.size=24;
				lib3ds_chunk_write(c, io);
				color_write(material.diffuse, io);
			}

			{ // ---- CHK_MAT_SPECULAR ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_SPECULAR;
				c.size=24;
				lib3ds_chunk_write(c, io);
				color_write(material.specular, io);
			}

			{ // ---- CHK_MAT_SHININESS ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_SHININESS;
				c.size=14;
				lib3ds_chunk_write(c, io);
				int_percentage_write(material.shininess, io);
			}

			{ // ---- CHK_MAT_SHIN2PCT ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_SHIN2PCT;
				c.size=14;
				lib3ds_chunk_write(c, io);
				int_percentage_write(material.shin_strength, io);
			}

			{ // ---- CHK_MAT_TRANSPARENCY ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_TRANSPARENCY;
				c.size=14;
				lib3ds_chunk_write(c, io);
				int_percentage_write(material.transparency, io);
			}

			{ // ---- CHK_MAT_XPFALL ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_XPFALL;
				c.size=14;
				lib3ds_chunk_write(c, io);
				int_percentage_write(material.falloff, io);
			}

			if(material.use_falloff)
			{ // ---- CHK_MAT_USE_XPFALL ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_USE_XPFALL;
				c.size=6;
				lib3ds_chunk_write(c, io);
			}

			{ // ---- CHK_MAT_SHADING ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_SHADING;
				c.size=8;
				lib3ds_chunk_write(c, io);
				lib3ds_io_write_intw(io, (short)material.shading);
			}

			{ // ---- CHK_MAT_REFBLUR ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_REFBLUR;
				c.size=14;
				lib3ds_chunk_write(c, io);
				int_percentage_write(material.blur, io);
			}

			if(material.use_blur)
			{ // ---- CHK_MAT_USE_REFBLUR ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_USE_REFBLUR;
				c.size=6;
				lib3ds_chunk_write(c, io);
			}

			if(material.self_illum_flag)
			{ // ---- CHK_MAT_SELF_ILLUM ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_SELF_ILLUM;
				c.size=6;
				lib3ds_chunk_write(c, io);
			}

			if(material.two_sided)
			{ // ---- CHK_MAT_TWO_SIDE ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_TWO_SIDE;
				c.size=6;
				lib3ds_chunk_write(c, io);
			}

			if(material.map_decal)
			{ // ---- CHK_MAT_DECAL ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_DECAL;
				c.size=6;
				lib3ds_chunk_write(c, io);
			}

			if(material.is_additive)
			{ // ---- CHK_MAT_ADDITIVE ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_ADDITIVE;
				c.size=6;
				lib3ds_chunk_write(c, io);
			}

			if(material.use_wire)
			{ // ---- CHK_MAT_WIRE ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_WIRE;
				c.size=6;
				lib3ds_chunk_write(c, io);
			}

			if(material.use_wire_abs)
			{ // ---- CHK_MAT_WIREABS ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_WIREABS;
				c.size=6;
				lib3ds_chunk_write(c, io);
			}

			{ // ---- CHK_MAT_WIRE_SIZE ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_WIRE_SIZE;
				c.size=10;
				lib3ds_chunk_write(c, io);
				lib3ds_io_write_float(io, material.wire_size);
			}

			if(material.face_map)
			{ // ---- CHK_MAT_FACEMAP ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_FACEMAP;
				c.size=6;
				lib3ds_chunk_write(c, io);
			}

			if(material.soften)
			{ // ---- CHK_MAT_PHONGSOFT ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_PHONGSOFT;
				c.size=6;
				lib3ds_chunk_write(c, io);
			}

			texture_map_write(Lib3dsChunks.CHK_MAT_TEXMAP, material.texture1_map, io);
			texture_map_write(Lib3dsChunks.CHK_MAT_TEXMASK, material.texture1_mask, io);
			texture_map_write(Lib3dsChunks.CHK_MAT_TEX2MAP, material.texture2_map, io);
			texture_map_write(Lib3dsChunks.CHK_MAT_TEX2MASK, material.texture2_mask, io);
			texture_map_write(Lib3dsChunks.CHK_MAT_OPACMAP, material.opacity_map, io);
			texture_map_write(Lib3dsChunks.CHK_MAT_OPACMASK, material.opacity_mask, io);
			texture_map_write(Lib3dsChunks.CHK_MAT_BUMPMAP, material.bump_map, io);
			texture_map_write(Lib3dsChunks.CHK_MAT_BUMPMASK, material.bump_mask, io);
			texture_map_write(Lib3dsChunks.CHK_MAT_SPECMAP, material.specular_map, io);
			texture_map_write(Lib3dsChunks.CHK_MAT_SPECMASK, material.specular_mask, io);
			texture_map_write(Lib3dsChunks.CHK_MAT_SHINMAP, material.shininess_map, io);
			texture_map_write(Lib3dsChunks.CHK_MAT_SHINMASK, material.shininess_mask, io);
			texture_map_write(Lib3dsChunks.CHK_MAT_SELFIMAP, material.self_illum_map, io);
			texture_map_write(Lib3dsChunks.CHK_MAT_SELFIMASK, material.self_illum_mask, io);
			texture_map_write(Lib3dsChunks.CHK_MAT_REFLMAP, material.reflection_map, io);
			texture_map_write(Lib3dsChunks.CHK_MAT_REFLMASK, material.reflection_mask, io);

			{ // ---- CHK_MAT_ACUBIC ----
				Lib3dsChunk c=new Lib3dsChunk();
				c.chunk=Lib3dsChunks.CHK_MAT_ACUBIC;
				c.size=18;
				lib3ds_chunk_write(c, io);
				lib3ds_io_write_intb(io, 0);
				lib3ds_io_write_intb(io, (sbyte)material.autorefl_map_anti_alias);
				lib3ds_io_write_intw(io, (short)material.autorefl_map_flags);
				lib3ds_io_write_intd(io, material.autorefl_map_size);
				lib3ds_io_write_intd(io, material.autorefl_map_frame_step);
			}

			lib3ds_chunk_write_end(c_mat_entry, io);
		}
Exemplo n.º 12
0
		public static void lib3ds_material_read(Lib3dsMaterial material, Lib3dsIo io)
		{
			Lib3dsChunk c=new Lib3dsChunk();
			Lib3dsChunks chunk;

			Debug.Assert(material!=null);
			lib3ds_chunk_read_start(c, Lib3dsChunks.CHK_MAT_ENTRY, io);

			while((chunk=lib3ds_chunk_read_next(c, io))!=0)
			{
				switch(chunk)
				{
					case Lib3dsChunks.CHK_MAT_NAME:
						material.name=lib3ds_io_read_string(io, 64);
						lib3ds_io_log_indent(io, 1);
						lib3ds_io_log(io, Lib3dsLogLevel.LIB3DS_LOG_INFO, "NAME={0}", material.name);
						lib3ds_io_log_indent(io, -1);
						break;
					case Lib3dsChunks.CHK_MAT_AMBIENT:
						lib3ds_chunk_read_reset(c, io);
						color_read(material.ambient, io);
						break;
					case Lib3dsChunks.CHK_MAT_DIFFUSE:
						lib3ds_chunk_read_reset(c, io);
						color_read(material.diffuse, io);
						break;
					case Lib3dsChunks.CHK_MAT_SPECULAR:
						lib3ds_chunk_read_reset(c, io);
						color_read(material.specular, io);
						break;
					case Lib3dsChunks.CHK_MAT_SHININESS:
						lib3ds_chunk_read_reset(c, io);
						int_percentage_read(ref material.shininess, io);
						break;
					case Lib3dsChunks.CHK_MAT_SHIN2PCT:
						lib3ds_chunk_read_reset(c, io);
						int_percentage_read(ref material.shin_strength, io);
						break;
					case Lib3dsChunks.CHK_MAT_TRANSPARENCY:
						lib3ds_chunk_read_reset(c, io);
						int_percentage_read(ref material.transparency, io);
						break;
					case Lib3dsChunks.CHK_MAT_XPFALL:
						lib3ds_chunk_read_reset(c, io);
						int_percentage_read(ref material.falloff, io);
						break;
					case Lib3dsChunks.CHK_MAT_SELF_ILPCT:
						lib3ds_chunk_read_reset(c, io);
						int_percentage_read(ref material.self_illum, io);
						break;
					case Lib3dsChunks.CHK_MAT_USE_XPFALL:
						material.use_falloff=true;
						break;
					case Lib3dsChunks.CHK_MAT_REFBLUR:
						lib3ds_chunk_read_reset(c, io);
						int_percentage_read(ref material.blur, io);
						break;
					case Lib3dsChunks.CHK_MAT_USE_REFBLUR:
						material.use_blur=true;
						break;
					case Lib3dsChunks.CHK_MAT_SHADING:
						material.shading=lib3ds_io_read_intw(io);
						break;
					case Lib3dsChunks.CHK_MAT_SELF_ILLUM:
						material.self_illum_flag=true;
						break;
					case Lib3dsChunks.CHK_MAT_TWO_SIDE:
						material.two_sided=true;
						break;
					case Lib3dsChunks.CHK_MAT_DECAL:
						material.map_decal=true;
						break;
					case Lib3dsChunks.CHK_MAT_ADDITIVE:
						material.is_additive=true;
						break;
					case Lib3dsChunks.CHK_MAT_FACEMAP:
						material.face_map=true;
						break;
					case Lib3dsChunks.CHK_MAT_PHONGSOFT:
						material.soften=true;
						break;
					case Lib3dsChunks.CHK_MAT_WIRE:
						material.use_wire=true;
						break;
					case Lib3dsChunks.CHK_MAT_WIREABS:
						material.use_wire_abs=true;
						break;
					case Lib3dsChunks.CHK_MAT_WIRE_SIZE:
						material.wire_size=lib3ds_io_read_float(io);
						break;
					case Lib3dsChunks.CHK_MAT_TEXMAP:
						lib3ds_chunk_read_reset(c, io);
						texture_map_read(material.texture1_map, io);
						break;
					case Lib3dsChunks.CHK_MAT_TEXMASK:
						lib3ds_chunk_read_reset(c, io);
						texture_map_read(material.texture1_mask, io);
						break;
					case Lib3dsChunks.CHK_MAT_TEX2MAP:
						lib3ds_chunk_read_reset(c, io);
						texture_map_read(material.texture2_map, io);
						break;
					case Lib3dsChunks.CHK_MAT_TEX2MASK:
						lib3ds_chunk_read_reset(c, io);
						texture_map_read(material.texture2_mask, io);
						break;
					case Lib3dsChunks.CHK_MAT_OPACMAP:
						lib3ds_chunk_read_reset(c, io);
						texture_map_read(material.opacity_map, io);
						break;
					case Lib3dsChunks.CHK_MAT_OPACMASK:
						lib3ds_chunk_read_reset(c, io);
						texture_map_read(material.opacity_mask, io);
						break;
					case Lib3dsChunks.CHK_MAT_BUMPMAP:
						lib3ds_chunk_read_reset(c, io);
						texture_map_read(material.bump_map, io);
						break;
					case Lib3dsChunks.CHK_MAT_BUMPMASK:
						lib3ds_chunk_read_reset(c, io);
						texture_map_read(material.bump_mask, io);
						break;
					case Lib3dsChunks.CHK_MAT_SPECMAP:
						lib3ds_chunk_read_reset(c, io);
						texture_map_read(material.specular_map, io);
						break;
					case Lib3dsChunks.CHK_MAT_SPECMASK:
						lib3ds_chunk_read_reset(c, io);
						texture_map_read(material.specular_mask, io);
						break;
					case Lib3dsChunks.CHK_MAT_SHINMAP:
						lib3ds_chunk_read_reset(c, io);
						texture_map_read(material.shininess_map, io);
						break;
					case Lib3dsChunks.CHK_MAT_SHINMASK:
						lib3ds_chunk_read_reset(c, io);
						texture_map_read(material.shininess_mask, io);
						break;
					case Lib3dsChunks.CHK_MAT_SELFIMAP:
						lib3ds_chunk_read_reset(c, io);
						texture_map_read(material.self_illum_map, io);
						break;
					case Lib3dsChunks.CHK_MAT_SELFIMASK:
						lib3ds_chunk_read_reset(c, io);
						texture_map_read(material.self_illum_mask, io);
						break;
					case Lib3dsChunks.CHK_MAT_REFLMAP:
						lib3ds_chunk_read_reset(c, io);
						texture_map_read(material.reflection_map, io);
						break;
					case Lib3dsChunks.CHK_MAT_REFLMASK:
						lib3ds_chunk_read_reset(c, io);
						texture_map_read(material.reflection_mask, io);
						break;
					case Lib3dsChunks.CHK_MAT_ACUBIC:
						lib3ds_io_read_intb(io);
						material.autorefl_map_anti_alias=lib3ds_io_read_intb(io);
						material.autorefl_map_flags=(uint)lib3ds_io_read_intw(io);
						material.autorefl_map_size=lib3ds_io_read_intd(io);
						material.autorefl_map_frame_step=lib3ds_io_read_intd(io);
						break;
					default: lib3ds_chunk_unknown(chunk, io); break;
				}
			}

			lib3ds_chunk_read_end(c, io);
		}