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); } }
// 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); } }
// 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; } }
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(); }
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); }
public static void lib3ds_material_free(Lib3dsMaterial material) { }
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); }
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); }
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); }
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); }
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); }