예제 #1
0
  /**
   * 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;
  }
예제 #2
0
  /**
   * 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;
  }
예제 #3
0
  /**
   * 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;
  }
예제 #4
0
  /**
   * 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;
  }
예제 #5
0
  /**
   * 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;
  }
예제 #6
0
  /**
   * 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;
  }