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);
        }
Beispiel #3
0
        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);
        }
Beispiel #6
0
        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));
        }
Beispiel #7
0
        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);
        }
Beispiel #9
0
 public void Visit(MaterialElem el)
 {
     Debug.Assert(false, "do not reach");
     throw new NotImplementedException();
 }
Beispiel #10
0
        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);
            }
        }
Beispiel #11
0
        public IProperty GetMaterialProperty(MaterialElem el)
        {
            var mtl = CreateMaterial(el);

            return(mtl.CreateProperty());
        }