本文整理汇总了C#中TgcViewer.Utils.TgcSceneLoader.TgcSceneLoader.loadScene方法的典型用法代码示例。如果您正苦于以下问题:C# TgcSceneLoader.loadScene方法的具体用法?C# TgcSceneLoader.loadScene怎么用?C# TgcSceneLoader.loadScene使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TgcViewer.Utils.TgcSceneLoader.TgcSceneLoader
的用法示例。
在下文中一共展示了TgcSceneLoader.loadScene方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: init
public override void init()
{
Device d3dDevice = GuiController.Instance.D3dDevice;
//Cargar escenario, pero inicialmente solo hacemos el parser, para separar los objetos que son solo luces y no meshes
string scenePath = GuiController.Instance.ExamplesDir + "Lights\\Escenario\\EscenarioLuces-TgcScene.xml";
string mediaPath = GuiController.Instance.ExamplesDir + "Lights\\Escenario\\";
TgcSceneParser parser = new TgcSceneParser();
TgcSceneData sceneData = parser.parseSceneFromString(File.ReadAllText(scenePath));
//Separar modelos reales de las luces, segun layer "Lights"
lights = new List<LightData>();
List<TgcMeshData> realMeshData = new List<TgcMeshData>();
for (int i = 0; i < sceneData.meshesData.Length; i++)
{
TgcMeshData meshData = sceneData.meshesData[i];
//Es una luz, no cargar mesh, solo importan sus datos
if (meshData.layerName == "Lights")
{
//Guardar datos de luz
LightData light = new LightData();
light.color = Color.FromArgb((int)meshData.color[0], (int)meshData.color[1], (int)meshData.color[2]);
light.aabb = new TgcBoundingBox(TgcParserUtils.float3ArrayToVector3(meshData.pMin), TgcParserUtils.float3ArrayToVector3(meshData.pMax));
light.pos = light.aabb.calculateBoxCenter();
lights.Add(light);
}
//Es un mesh real, agregar a array definitivo
else
{
realMeshData.Add(meshData);
}
}
//Reemplazar array original de meshData de sceneData por el definitivo
sceneData.meshesData = realMeshData.ToArray();
//Ahora si cargar meshes reales
TgcSceneLoader loader = new TgcSceneLoader();
scene = loader.loadScene(sceneData, mediaPath);
//Camara en 1ra persona
GuiController.Instance.FpsCamera.Enable = true;
GuiController.Instance.FpsCamera.MovementSpeed = 400f;
GuiController.Instance.FpsCamera.JumpSpeed = 300f;
GuiController.Instance.FpsCamera.setCamera(new Vector3(-20, 80, 450), new Vector3(0, 80, 1));
//Modifiers para variables de luz
GuiController.Instance.Modifiers.addBoolean("lightEnable", "lightEnable", true);
GuiController.Instance.Modifiers.addFloat("lightIntensity", 0, 150, 20);
GuiController.Instance.Modifiers.addFloat("lightAttenuation", 0.1f, 2, 0.3f);
GuiController.Instance.Modifiers.addFloat("specularEx", 0, 20, 9f);
//Modifiers para material
GuiController.Instance.Modifiers.addColor("mEmissive", Color.Black);
GuiController.Instance.Modifiers.addColor("mAmbient", Color.White);
GuiController.Instance.Modifiers.addColor("mDiffuse", Color.White);
GuiController.Instance.Modifiers.addColor("mSpecular", Color.White);
}
示例2: cargarEscena
public void cargarEscena(String zona1, String zona2, String zona3, String dirEscena, String nombreEscena)
{
this.zona1 = zona1;
this.zona2 = zona2;
this.zona3 = zona3;
//Cargar escenario, pero inicialmente solo hacemos el parser, para separar los objetos que son solo luces y no meshes
string scenePath = GuiController.Instance.AlumnoEjemplosDir + dirEscena + nombreEscena;
string mediaPath = GuiController.Instance.AlumnoEjemplosDir + dirEscena;
TgcSceneParser parser = new TgcSceneParser();
TgcSceneData sceneData = parser.parseSceneFromString(File.ReadAllText(scenePath));
//Separar modelos reales de las luces, y las luces según el layeral que pertenecen
List<TgcMeshData> realMeshData = new List<TgcMeshData>();
for (int i = 0; i < sceneData.meshesData.Length; i++)
{
TgcMeshData meshData = sceneData.meshesData[i];
//Es una luz, no cargar mesh, solo importan sus datos
if (meshData.layerName.Equals(zona1+constLuz))
{
//Guardar datos de luz de zona 1
LightData light = new LightData(meshData);
lucesZona1.Add(light);
}else if(meshData.layerName.Equals(zona2+constLuz)){
//Guardar datos de luz de zona 2
LightData light = new LightData(meshData);
lucesZona2.Add(light);
}else if(meshData.layerName.Equals(zona3+constLuz)){
//Guardar datos de luz de zona 3
LightData light = new LightData(meshData);
lucesZona3.Add(light);
} //Es un mesh real, agregar a array definitivo
realMeshData.Add(meshData);
}
//Quedaron separados los meshes de las luces. Las luces están separadas por zona.
//Reemplazar array original de meshData de sceneData por el definitivo
sceneData.meshesData = realMeshData.ToArray();
//Ahora si cargar meshes reales
TgcSceneLoader loader = new TgcSceneLoader();
scene = loader.loadScene(sceneData, mediaPath);
GuiController.Instance.Logger.log("Empieza compilacion de shader", Color.Red);
shader = TgcShaders.loadEffect(shaderUrl);
GuiController.Instance.Logger.log("Fin compilacion de shader", Color.Red);
shader.SetValue("mirrorBallTexture", TextureLoader.FromFile(GuiController.Instance.D3dDevice, GuiController.Instance.AlumnoEjemplosMediaDir + "\\mirrorBallLights.png"));
//Pre-calculamos las 3 luces mas cercanas de cada mesh y cargamos el Shader
foreach (TgcMesh mesh in scene.Meshes)
{
MeshLightData meshData = new MeshLightData();
meshData.mesh = mesh;
Vector3 meshCenter = mesh.BoundingBox.calculateBoxCenter();
meshData.lights = lucesMasCercanas(meshCenter, 3, mesh.Layer);
meshData.mesh.Effect = shader;
//separados por zona, no se porqué, capaz para optimizar, no se
if (mesh.Layer.Equals(this.zona1))
{
meshesZona1.Add(meshData);
}
else if (mesh.Layer.Equals(this.zona2))
{
meshesZona2.Add(meshData);
}
else if (mesh.Name.Equals("bola"))
{
createMirrorBall(mesh);
}else
{
meshesZona3.Add(meshData);
}
if(mesh.Layer.Contains(constLuz)){
luzEnMovimiento(mesh, lucesMasCercanas(meshCenter, 1, mesh.Layer));
meshData.mesh.Position = meshCenter;
}
}
}
示例3: init
public override void init()
{
Device d3dDevice = GuiController.Instance.D3dDevice;
//Cargar textura de CubeMap para Environment Map, fijo para todos los meshes
cubeMap = TextureLoader.FromCubeFile(d3dDevice, GuiController.Instance.ExamplesMediaDir + "Shaders\\CubeMap.dds");
//Cargar Shader personalizado de EnvironmentMap
effect = TgcShaders.loadEffect(GuiController.Instance.ExamplesMediaDir + "Shaders\\EnvironmentMap.fx");
//Cargar escenario, pero inicialmente solo hacemos el parser, para separar los objetos que son solo luces y no meshes
string scenePath = GuiController.Instance.ExamplesDir + "Lights\\NormalMapRoom\\NormalMapRoom-TgcScene.xml";
string mediaPath = GuiController.Instance.ExamplesDir + "Lights\\NormalMapRoom\\";
TgcSceneParser parser = new TgcSceneParser();
TgcSceneData sceneData = parser.parseSceneFromString(File.ReadAllText(scenePath));
//Separar modelos reales de las luces, segun layer "Lights"
lights = new List<LightData>();
List<TgcMeshData> realMeshData = new List<TgcMeshData>();
for (int i = 0; i < sceneData.meshesData.Length; i++)
{
TgcMeshData meshData = sceneData.meshesData[i];
//Es una luz, no cargar mesh, solo importan sus datos
if (meshData.layerName == "Lights")
{
//Guardar datos de luz
LightData light = new LightData();
light.color = Color.FromArgb((int)meshData.color[0], (int)meshData.color[1], (int)meshData.color[2]);
light.aabb = new TgcBoundingBox(TgcParserUtils.float3ArrayToVector3(meshData.pMin), TgcParserUtils.float3ArrayToVector3(meshData.pMax));
light.pos = light.aabb.calculateBoxCenter();
lights.Add(light);
}
//Es un mesh real, agregar a array definitivo
else
{
realMeshData.Add(meshData);
}
}
//Reemplazar array original de meshData de sceneData por el definitivo
sceneData.meshesData = realMeshData.ToArray();
//Ahora si cargar meshes reales
TgcSceneLoader loader = new TgcSceneLoader();
TgcScene scene = loader.loadScene(sceneData, mediaPath);
//Separar meshes con bumpMapping de los comunes
bumpMeshes = new List<TgcMeshBumpMapping>();
commonMeshes = new List<TgcMesh>();
foreach (TgcMesh mesh in scene.Meshes)
{
//Mesh con BumpMapping
if (mesh.Layer == "BumpMap")
{
//Por convencion de este ejemplo el NormalMap se llama igual que el DiffuseMap (y cada mesh tiene una sola)
string path = mesh.DiffuseMaps[0].FilePath;
string[] split = path.Split('.');
path = split[0] + "_NormalMap.png";
//Convertir TgcMesh a TgcMeshBumpMapping
TgcTexture normalMap = TgcTexture.createTexture(path);
TgcTexture[] normalMapArray = new TgcTexture[] { normalMap };
TgcMeshBumpMapping bumpMesh = TgcMeshBumpMapping.fromTgcMesh(mesh, normalMapArray);
bumpMesh.Effect = effect;
bumpMesh.Technique = "EnvironmentMapTechnique";
bumpMeshes.Add(bumpMesh);
//Liberar original
mesh.dispose();
}
//Mesh normal
else
{
commonMeshes.Add(mesh);
}
}
//Camara en 1ra persona
GuiController.Instance.FpsCamera.Enable = true;
GuiController.Instance.FpsCamera.setCamera(new Vector3(0, 50, 100), new Vector3(0, 50, -1));
//Modifiers
GuiController.Instance.Modifiers.addBoolean("lightEnable", "lightEnable", true);
GuiController.Instance.Modifiers.addFloat("reflection", 0, 1, 0.2f);
GuiController.Instance.Modifiers.addFloat("bumpiness", 0, 2, 1f);
GuiController.Instance.Modifiers.addFloat("lightIntensity", 0, 150, 20);
GuiController.Instance.Modifiers.addFloat("lightAttenuation", 0.1f, 2, 0.3f);
GuiController.Instance.Modifiers.addFloat("specularEx", 0, 20, 9f);
GuiController.Instance.Modifiers.addColor("mEmissive", Color.Black);
GuiController.Instance.Modifiers.addColor("mAmbient", Color.White);
GuiController.Instance.Modifiers.addColor("mDiffuse", Color.White);
//.........这里部分代码省略.........
示例4: init
public override void init()
{
Device d3dDevice = GuiController.Instance.D3dDevice;
//Cargar escenario
TgcSceneLoader loader = new TgcSceneLoader();
//Cargar textura de CubeMap para Environment Map, fijo para todos los meshes
cubeMap = TextureLoader.FromCubeFile(d3dDevice, GuiController.Instance.ExamplesMediaDir + "Shaders\\CubeMap.dds");
//Cargar Shader personalizado de EnvironmentMap
effect = TgcShaders.loadEffect(GuiController.Instance.AlumnoEjemplosDir + "AlumnoMedia\\RideTheLightning\\Shaders\\EnvironmentMap_Integrador2.fx");
//Configurar MeshFactory customizado
//scene = loader.loadSceneFromFile(GuiController.Instance.ExamplesMediaDir + "MeshCreator\\Scenes\\DepositoMin\\Deposito-TgcScene.xml");
// scene = loader.loadSceneFromFile(GuiController.Instance.ExamplesMediaDir + "MeshCreator\\Scenes\\Deposito2\\Deposito-TgcScene.xml");
//Cargar escenario, pero inicialmente solo hacemos el parser, para separar los objetos que son solo luces y no meshes
string scenePath = GuiController.Instance.AlumnoEjemplosDir + "AlumnoMedia\\RideTheLightning\\Scenes\\Deposito\\Deposito-TgcScene.xml";
string mediaPath = GuiController.Instance.AlumnoEjemplosDir + "AlumnoMedia\\RideTheLightning\\Scenes\\Deposito\\";
TgcSceneParser parser = new TgcSceneParser();
TgcSceneData sceneData = parser.parseSceneFromString(File.ReadAllText(scenePath));
//Separar modelos reales de las luces, segun layer "Lights"
lights = new List<LightData>();
List<TgcMeshData> realMeshData = new List<TgcMeshData>();
for (int i = 0; i < sceneData.meshesData.Length; i++)
{
TgcMeshData meshData = sceneData.meshesData[i];
//Es una luz, no cargar mesh, solo importan sus datos
if (meshData.layerName == "lights")
{
//Guardar datos de luz
LightData light = new LightData();
light.color = Color.FromArgb((int)meshData.color[0], (int)meshData.color[1], (int)meshData.color[2]);
light.aabb = new TgcBoundingBox(TgcParserUtils.float3ArrayToVector3(meshData.pMin), TgcParserUtils.float3ArrayToVector3(meshData.pMax));
light.pos = light.aabb.calculateBoxCenter();
light.spot = meshData.userProperties["esSpot"].Equals("SI");
light.direccion = convertirDireccion(meshData.userProperties["dir"]);
lights.Add(light);
}
//Es un mesh real, agregar a array definitivo
else
{
realMeshData.Add(meshData);
}
}
//Reemplazar array original de meshData de sceneData por el definitivo
sceneData.meshesData = realMeshData.ToArray();
//Ahora si cargar meshes reales
scene = loader.loadScene(sceneData, mediaPath);
//Pre-calculamos las 3 luces mas cercanas de cada mesh
meshesYLuces = new List<MeshLightData>();
foreach (TgcMesh mesh in scene.Meshes)
{
MeshLightData meshData = new MeshLightData();
meshData.mesh = mesh;
Vector3 meshCeter = mesh.BoundingBox.calculateBoxCenter();
meshData.lights = lucesMasCercanas(meshCeter, 3);
meshesYLuces.Add(meshData);
}
//Camara en 1ra persona
GuiController.Instance.FpsCamera.Enable = true;
GuiController.Instance.FpsCamera.MovementSpeed = 400f;
GuiController.Instance.FpsCamera.JumpSpeed = 300f;
GuiController.Instance.FpsCamera.setCamera(new Vector3(80, 80, 0), new Vector3(0, 80, 1));
//Mesh para la luz
//Modifiers de la luz
GuiController.Instance.Modifiers.addBoolean("lightEnable", "lightEnable", true);
GuiController.Instance.Modifiers.addBoolean("linterna", "linterna", true);
GuiController.Instance.Modifiers.addBoolean("foco", "foco", true);
GuiController.Instance.Modifiers.addColor("lightColor", Color.White);
GuiController.Instance.Modifiers.addFloat("lightIntensity", 0, 150, 35);
GuiController.Instance.Modifiers.addFloat("lightAttenuation", 0.1f, 2, 0.3f);
GuiController.Instance.Modifiers.addFloat("specularEx", 0, 20, 9f);
GuiController.Instance.Modifiers.addFloat("spotAngle", 0, 180, 39f);
GuiController.Instance.Modifiers.addFloat("spotExponent", 0, 20, 7f);
//Modifiers de material
GuiController.Instance.Modifiers.addColor("mEmissive", Color.Black);
GuiController.Instance.Modifiers.addColor("mAmbient", Color.White);
GuiController.Instance.Modifiers.addColor("mDiffuse", Color.White);
GuiController.Instance.Modifiers.addColor("mSpecular", Color.White);
}