/** * Crea un obteto de datos de luz para una luz direccional de color blanco. * * @param dir Direcci�n de la luz * @return Objeto de datos de luz para una luz direccional */ public static N3LightData createDirectionalLightData(N3Vector3D dir) { N3LightData result = new N3LightData(); result.positional = false; result.direction = dir; return result; }
/** * Crea un obteto de datos de luz para una luz direccional con las componentes de color * especificadas. * * @param a Componente ambiental * @param s Componente especular * @param d Componente difusa * @param dir Direcci�n de la luz * @return Objeto de datos de luz para una luz direccional */ public static N3LightData createDirectionalLightData( N3ColorRGBA a, N3ColorRGBA s, N3ColorRGBA d, N3Vector3D dir) { N3LightData result = new N3LightData(a, s, d); result.positional = false; result.direction = dir; return result; }
/** * Crea un obteto de datos de luz para una luz focal de color blanco. * * @param dir Direcci�n de la luz * @param ang �ngulo de apertura del foco * @return Objeto de datos de luz para una luz focal. */ public static N3LightData createSpotLightData(N3Vector3D dir, float ang) { N3LightData result = new N3LightData(); result.angle = ang; result.positional = true; result.direction = dir; return result; }
/** * Crea un obteto de datos de luz para una luz puntual con las componentes de color especificadas. * * @param a Componente ambiental * @param s Componente especular * @param d Componente difusa * @return Objeto de datos de luz para una luz puntual. */ public static N3LightData createPointLightData(N3ColorRGBA a, N3ColorRGBA s, N3ColorRGBA d) { N3LightData result = new N3LightData(a, s, d); result.angle = 180.0f; result.positional = true; result.direction = new N3Vector3D(0, 0, 1.0f); return result; }
/** * Crea un obteto de datos de luz para una luz puntual de color blanco. * * @return Objeto de datos de luz para una luz puntual. */ public static N3LightData createPointLightData() { N3LightData result = new N3LightData(); result.angle = 180.0f; result.direction = new N3Vector3D(0, 0, 1.0f); result.positional = true; return result; }
/** * Devuelve una instancia de la clase, a partir de los par�metros, y de la descripci�n XML en * infoNode. * * @param infoNode Descripci�n XML de la instacia a crear * @param nodes Rama XML con las descripciones de los recursos de la escena * @param resources Lista de recursos de la escena * @param reader Instancia capaz de crear recursos que a�n no se han creado * @param render Render para el que se est� creando la escena * @param scene Escena que se est� creando * @return Instancia de la clase con la informaci�n especificada */ public static N3PersistentResource loadInstance( Element infoNode, NodeList nodes, N3PersistentResourceList resources, N3SceneReader reader, N3Render render, N3Scene scene) throws Exception { Element data = (Element) infoNode.getElementsByTagName("ambiental").item(0); int index = Integer.parseInt(data.getAttribute("index")); N3ColorRGBA ambiental = (N3ColorRGBA) reader.getResource(index, nodes); data = (Element) infoNode.getElementsByTagName("diffuse").item(0); index = Integer.parseInt(data.getAttribute("index")); N3ColorRGBA diffuse = (N3ColorRGBA) reader.getResource(index, nodes); data = (Element) infoNode.getElementsByTagName("specular").item(0); index = Integer.parseInt(data.getAttribute("index")); N3ColorRGBA specular = (N3ColorRGBA) reader.getResource(index, nodes); data = (Element) infoNode.getElementsByTagName("direction").item(0); index = Integer.parseInt(data.getAttribute("index")); N3Vector3D direction = (N3Vector3D) reader.getResource(index, nodes); data = (Element) infoNode.getElementsByTagName("positional").item(0); boolean positional = (new Boolean(data.getAttribute("value"))).booleanValue(); data = (Element) infoNode.getElementsByTagName("angle").item(0); float angle = Float.parseFloat(data.getAttribute("value")); data = (Element) infoNode.getElementsByTagName("spotExponent").item(0); float spotExponent = Float.parseFloat(data.getAttribute("value")); data = (Element) infoNode.getElementsByTagName("attenuation").item(0); float constant = Float.parseFloat(data.getAttribute("constant")); float linear = Float.parseFloat(data.getAttribute("linear")); float quadratic = Float.parseFloat(data.getAttribute("quadratic")); N3LightData result = new N3LightData(ambiental, specular, diffuse); result.setPositional(positional); result.setAngle(angle); result.setSpotExponent(spotExponent); result.setConstantAttenuation(constant); result.setLinearAttenuation(linear); result.setQuadraticAttenuation(quadratic); result.setDirection(direction); return result; }