PointLights.hx 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import hxd.Math;
  2. class PointLights extends hxd.App {
  3. var time : Float = 0.;
  4. var lights : Array<h3d.scene.fwd.PointLight>;
  5. var dir : h3d.scene.fwd.DirLight;
  6. override function init() {
  7. var prim = new h3d.prim.Cube();
  8. prim.translate( -0.5, -0.5, -0.5);
  9. prim.addNormals();
  10. for( i in 0...100 ) {
  11. var b = new h3d.scene.Mesh(prim, s3d);
  12. b.x = Math.srand() * 3;
  13. b.y = Math.srand() * 3;
  14. b.z = Math.srand() * 2 - 0.5;
  15. b.scaleX = b.scaleY = Math.random() * 0.5 + 0.2;
  16. var k = 1.;
  17. b.material.color.setColor(0xFFFFFF);
  18. b.material.shadows = false;
  19. }
  20. var sphere = new h3d.prim.GeoSphere(4);
  21. lights = [];
  22. var colors = [0xFFFFFF, 0xFF0000, 0x00FF00, 0x0000FF, 0xFF00FF, 0xFFFF00, 0x00FFFF];
  23. for( c in colors ) {
  24. for( i in 0...3 ) {
  25. var l = new h3d.scene.fwd.PointLight(s3d);
  26. l.x = Math.srand() * 3;
  27. l.y = Math.srand() * 3;
  28. l.z = Math.srand() * 2 - 0.5;
  29. l.color.setColor(c);
  30. l.params.y = 3;
  31. lights.push(l);
  32. var p = new h3d.scene.Mesh(sphere, l);
  33. p.scale(0.03);
  34. p.material.shadows = false;
  35. p.material.mainPass.enableLights = false;
  36. p.material.color.setColor(0xFF000000 | c);
  37. }
  38. }
  39. s3d.camera.zNear = 2;
  40. dir = new h3d.scene.fwd.DirLight(new h3d.Vector(0.2, 0.3, -1), s3d);
  41. dir.color.set(0.1, 0.1, 0.1);
  42. cast(s3d.lightSystem,h3d.scene.fwd.LightSystem).ambientLight.set(0, 0, 0);
  43. s3d.camera.pos.set(5, 1, 3);
  44. new h3d.scene.CameraController(s3d).loadFromCamera();
  45. }
  46. override function update( dt : Float ) {
  47. time += 0.12 * dt;
  48. var a = [0.4, 0.2, 0.5, 0.8, 1.2, 0.5, 0.7];
  49. for( i in 0...lights.length ) {
  50. var l = lights[i];
  51. var t = time * 5 + i;
  52. l.x = Math.cos(t * a[i%a.length]) * 3;
  53. l.y = Math.sin(t * a[(i + 3) % a.length]) * 3;
  54. l.z = Math.cos(t * a[(i + 4) % a.length]) * Math.sin(t * a[(i + 6) % a.length]) * 2 - 0.5;
  55. }
  56. dir.setDirection(new h3d.Vector(Math.cos(time * 0.3) * 0.2, Math.sin(time * 0.35) * 0.3 + 0.3, -1));
  57. }
  58. static function main() {
  59. new PointLights();
  60. }
  61. }