public AFrameMaterial Create(MaterialElem elem) { var container = elem.Container; var src = ""; if (elem.Map != null) { src = elem.Map.ImagePath; } var shader = new StandardAFrameShader() { Color = container.Color, Metalness = container.Metallic, Roughness = container.Roughness, Repeat = container.MainTextureScale, Src = src, }; var side = (container.Color.a == 1) ? MaterialSide.Front : MaterialSide.Double; var output = new AFrameMaterial() { Shader = shader, Transparent = container.Transparent, Opacity = container.Color.a, Side = side, }; return(output); }
public AFrameMaterial Create(MaterialElem elem) { var container = elem.Container; var src = ""; if (elem.Map != null) { src = elem.Map.ImagePath; } var shader = new FlatAFrameShader() { Color = container.Color, Repeat = container.MainTextureScale, Src = src, }; var output = new AFrameMaterial() { Shader = shader, Transparent = container.Transparent, Side = (container.Color.a == 1) ? MaterialSide.Front: MaterialSide.Double, }; return(output); }
MaterialElem CreateMaterialElem(MaterialContainer n) { var mtl = new MaterialElem(n); mtl.Uuid = n.Guid; if (n.MainTexture) { var instanceId = n.MainTexture.GetInstanceID().ToString(); mtl.Map = root.SharedNodeTable.Get <TextureElem>(instanceId); } if (n.BumpMap) { var instanceId = n.BumpMap.GetInstanceID().ToString(); mtl.BumpMap = root.SharedNodeTable.Get <TextureElem>(instanceId); } if (n.DetailNormalMap) { var uid = n.DetailNormalMap.GetInstanceID().ToString(); mtl.NormalMap = root.SharedNodeTable.Get <TextureElem>(uid); } if (n.ParallaxMap) { var uid = n.ParallaxMap.GetInstanceID().ToString(); mtl.DisplacementMap = root.SharedNodeTable.Get <TextureElem>(uid); } if (n.OcclusionMap) { var uid = n.OcclusionMap.GetInstanceID().ToString(); mtl.AoMap = root.SharedNodeTable.Get <TextureElem>(uid); } if (n.EmissionMap) { var uid = n.EmissionMap.GetInstanceID().ToString(); mtl.EmissiveMap = root.SharedNodeTable.Get <TextureElem>(uid); } if (n.MetallicGlossMap) { var uid = n.MetallicGlossMap.GetInstanceID().ToString(); mtl.MetalnessMap = root.SharedNodeTable.Get <TextureElem>(uid); } if (n.SpecGlossMap) { var uid = n.SpecGlossMap.GetInstanceID().ToString(); mtl.SpecularMap = root.SharedNodeTable.Get <TextureElem>(uid); } return(mtl); }
public void Visit(MaterialElem el) { using (var scope = new JsonScopeObjectWriter(writer)) { scope.WriteKeyValue("uuid", el.Uuid); scope.WriteKeyValue("name", el.Name); scope.WriteKeyValue("type", el.Type); var w = FindThreeJSWriter(el.Type); w.Write(el, scope); } }
public AFrameMaterial Create(MaterialElem elem) { var container = elem.Container; var shader = new FlatAFrameShader() { Color = container.Color, }; var output = new AFrameMaterial() { Side = MaterialSide.Front, Shader = shader, }; return(output); }
public AFrameMaterial CreateMaterial(MaterialElem el) { var materialType = PredefinedMaterialTable[0]; var shadername = el.Material.shader.name; foreach (var m in PredefinedMaterialTable) { if (m.from == shadername) { materialType = m; break; } } var factory = FindMaterialFactory(materialType.to); return(factory.Create(el)); }
public IProperty GetMaterialProperty(MaterialElem el) { var materialType = PredefinedMaterialTable[0]; var shadername = el.Material.shader.name; foreach (var m in PredefinedMaterialTable) { if (m.from == shadername) { materialType = m; break; } } var factory = FindMaterialFactory(materialType.to); var mtl = factory.Create(el); return(mtl.CreateProperty()); }
public AFrameMaterial Create(MaterialElem elem) { var container = elem.Container; var src = ""; if (elem.Map != null) { src = elem.Map.ImagePath; } var shader = new FlatAFrameShader() { Repeat = container.MainTextureScale, Src = src, }; var output = new AFrameMaterial() { Shader = shader, Side = MaterialSide.Front, }; return(output); }
public void Visit(MaterialElem el) { Debug.Assert(false, "do not reach"); throw new NotImplementedException(); }
void RegisterMaterial(MaterialContainer n) { // 유니티에서는 lightmap 정보가 renderer에 붙지만 // three.js에서는 material에 들어간다. // 그래서 material의 경우는 1:1로 매핑하는게 불가능하다. // 그래서 같은 material에 대해서 라이트맵별로 재질을 만들어서 등록했다. // (라이트맵이 없는 재질도 등록) /* * for (int i = -1; i < LightmapSettings.lightmaps.Length; i++) { * // lightmap * if (i >= 0) { * var lightmapNode = new LightmapNode(i, n.Scene); * mtl.LightMapNode = lightmapTextureTable[i]; * lightmapMaterialTable[i] = mtl; * } * } */ var mtl = new MaterialElem(n); root.SharedNodeTable.Add(mtl, n.InstanceId); if (n.MainTexture) { var instanceId = n.MainTexture.GetInstanceID(); mtl.Map = root.SharedNodeTable.Get <TextureElem>(instanceId); } if (n.BumpMap) { var instanceId = n.BumpMap.GetInstanceID(); mtl.BumpMap = root.SharedNodeTable.Get <TextureElem>(instanceId); } if (n.DetailNormalMap) { var uid = n.DetailNormalMap.GetInstanceID(); mtl.NormalMap = root.SharedNodeTable.Get <TextureElem>(uid); } if (n.ParallaxMap) { var uid = n.ParallaxMap.GetInstanceID(); mtl.DisplacementMap = root.SharedNodeTable.Get <TextureElem>(uid); } if (n.OcclusionMap) { var uid = n.OcclusionMap.GetInstanceID(); mtl.AoMap = root.SharedNodeTable.Get <TextureElem>(uid); } if (n.EmissionMap) { var uid = n.EmissionMap.GetInstanceID(); mtl.EmissiveMap = root.SharedNodeTable.Get <TextureElem>(uid); } if (n.MetallicGlossMap) { var uid = n.MetallicGlossMap.GetInstanceID(); mtl.MetalnessMap = root.SharedNodeTable.Get <TextureElem>(uid); } if (n.SpecGlossMap) { var uid = n.SpecGlossMap.GetInstanceID(); mtl.SpecularMap = root.SharedNodeTable.Get <TextureElem>(uid); } }
public IProperty GetMaterialProperty(MaterialElem el) { var mtl = CreateMaterial(el); return(mtl.CreateProperty()); }