Beispiel #1
0
  public LightingInfo isIlluminati(
      final Vector4 point, Light light, CustomStack stack, final RayCollisionInfo collision) {
    if (light instanceof DirectionalLight) {
      return new LightingInfo(null, true, light.getDirection(point));
    }

    final PositionLight pointLight = (PositionLight) light;
    Vector4 position = pointLight.getPosition();
    Vector4 aux = new Vector4(position);
    aux.sub(point);
    Ray ray = new Ray(point, aux);

    RayCollisionInfo rci = tree.getCollision(point.distanceTo(position) + 0.0001, ray, stack, 0);

    if (rci == null) {
      if (light instanceof AreaLight) {}
      return new LightingInfo(null, !(light instanceof AreaLight), light.getDirection(point));
    }

    if (rci.obj.material.light != null) {
      return new LightingInfo(rci, true, rci.getRay().getDir());
    }
    return new LightingInfo(null, false, null);
  }