@3driseai/3drise-viewer 0.1.22 → 0.1.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/dist/components/CreatedObject.d.ts.map +1 -1
  2. package/dist/components/CreatedObject.js +6 -1
  3. package/dist/components/LightObject.d.ts.map +1 -1
  4. package/dist/components/LightObject.js +24 -13
  5. package/dist/components/ModelPrimitive.d.ts.map +1 -1
  6. package/dist/components/ModelPrimitive.js +4 -6
  7. package/dist/components/ObjectNode.js +1 -1
  8. package/dist/components/ParticlesGenerator.d.ts +3 -1
  9. package/dist/components/ParticlesGenerator.d.ts.map +1 -1
  10. package/dist/components/ParticlesGenerator.js +2 -2
  11. package/dist/components/ProjectLoader.js +1 -1
  12. package/dist/components/SceneBuilder.d.ts.map +1 -1
  13. package/dist/components/SceneBuilder.js +5 -1
  14. package/dist/components/candle/Candle.d.ts +14 -0
  15. package/dist/components/candle/Candle.d.ts.map +1 -0
  16. package/dist/components/candle/Candle.js +249 -0
  17. package/dist/components/candle/candleGeometry.d.ts +23 -0
  18. package/dist/components/candle/candleGeometry.d.ts.map +1 -0
  19. package/dist/components/candle/candleGeometry.js +73 -0
  20. package/dist/components/candle/candleMaterials.d.ts +24 -0
  21. package/dist/components/candle/candleMaterials.d.ts.map +1 -0
  22. package/dist/components/candle/candleMaterials.js +433 -0
  23. package/dist/components/candle/flameMotion.d.ts +64 -0
  24. package/dist/components/candle/flameMotion.d.ts.map +1 -0
  25. package/dist/components/candle/flameMotion.js +138 -0
  26. package/dist/components/candle/index.d.ts +9 -0
  27. package/dist/components/candle/index.d.ts.map +1 -0
  28. package/dist/components/candle/index.js +6 -0
  29. package/dist/components/fluorescentTube/FluorescentTube.d.ts +14 -0
  30. package/dist/components/fluorescentTube/FluorescentTube.d.ts.map +1 -0
  31. package/dist/components/fluorescentTube/FluorescentTube.js +262 -0
  32. package/dist/components/fluorescentTube/index.d.ts +5 -0
  33. package/dist/components/fluorescentTube/index.d.ts.map +1 -0
  34. package/dist/components/fluorescentTube/index.js +3 -0
  35. package/dist/components/fluorescentTube/tubeMaterials.d.ts +34 -0
  36. package/dist/components/fluorescentTube/tubeMaterials.d.ts.map +1 -0
  37. package/dist/components/fluorescentTube/tubeMaterials.js +185 -0
  38. package/dist/components/index.d.ts +4 -0
  39. package/dist/components/index.d.ts.map +1 -1
  40. package/dist/components/index.js +4 -0
  41. package/dist/components/ledArray/LedArray.d.ts +14 -0
  42. package/dist/components/ledArray/LedArray.d.ts.map +1 -0
  43. package/dist/components/ledArray/LedArray.js +243 -0
  44. package/dist/components/ledArray/index.d.ts +7 -0
  45. package/dist/components/ledArray/index.d.ts.map +1 -0
  46. package/dist/components/ledArray/index.js +4 -0
  47. package/dist/components/ledArray/ledLayout.d.ts +22 -0
  48. package/dist/components/ledArray/ledLayout.d.ts.map +1 -0
  49. package/dist/components/ledArray/ledLayout.js +59 -0
  50. package/dist/components/ledArray/ledMaterials.d.ts +14 -0
  51. package/dist/components/ledArray/ledMaterials.d.ts.map +1 -0
  52. package/dist/components/ledArray/ledMaterials.js +151 -0
  53. package/dist/components/lightBulb/LightBulb.d.ts.map +1 -1
  54. package/dist/components/lightBulb/LightBulb.js +10 -13
  55. package/dist/components/particles/BioluminescentWakeParticles.d.ts +3 -1
  56. package/dist/components/particles/BioluminescentWakeParticles.d.ts.map +1 -1
  57. package/dist/components/particles/BioluminescentWakeParticles.js +7 -3
  58. package/dist/components/particles/BrownianDustParticles.d.ts +3 -1
  59. package/dist/components/particles/BrownianDustParticles.d.ts.map +1 -1
  60. package/dist/components/particles/BrownianDustParticles.js +7 -3
  61. package/dist/components/particles/ChladniSandParticles.d.ts +3 -1
  62. package/dist/components/particles/ChladniSandParticles.d.ts.map +1 -1
  63. package/dist/components/particles/ChladniSandParticles.js +7 -3
  64. package/dist/components/particles/ElectronOrbitalsParticles.d.ts +3 -1
  65. package/dist/components/particles/ElectronOrbitalsParticles.d.ts.map +1 -1
  66. package/dist/components/particles/ElectronOrbitalsParticles.js +7 -3
  67. package/dist/components/particles/FaradayPowderParticles.d.ts +3 -1
  68. package/dist/components/particles/FaradayPowderParticles.d.ts.map +1 -1
  69. package/dist/components/particles/FaradayPowderParticles.js +7 -3
  70. package/dist/components/particles/GrinderSparksParticles.d.ts +3 -1
  71. package/dist/components/particles/GrinderSparksParticles.d.ts.map +1 -1
  72. package/dist/components/particles/GrinderSparksParticles.js +7 -3
  73. package/dist/components/particles/NeonRainParticles.d.ts +3 -1
  74. package/dist/components/particles/NeonRainParticles.d.ts.map +1 -1
  75. package/dist/components/particles/NeonRainParticles.js +7 -3
  76. package/dist/components/particles/TidalStreamParticles.d.ts +3 -1
  77. package/dist/components/particles/TidalStreamParticles.d.ts.map +1 -1
  78. package/dist/components/particles/TidalStreamParticles.js +7 -3
  79. package/dist/components/spotBeam/SpotBeam.d.ts +14 -0
  80. package/dist/components/spotBeam/SpotBeam.d.ts.map +1 -0
  81. package/dist/components/spotBeam/SpotBeam.js +244 -0
  82. package/dist/components/spotBeam/beamPatterns.d.ts +11 -0
  83. package/dist/components/spotBeam/beamPatterns.d.ts.map +1 -0
  84. package/dist/components/spotBeam/beamPatterns.js +106 -0
  85. package/dist/components/spotBeam/index.d.ts +7 -0
  86. package/dist/components/spotBeam/index.d.ts.map +1 -0
  87. package/dist/components/spotBeam/index.js +4 -0
  88. package/dist/components/spotBeam/spotBeamMaterials.d.ts +16 -0
  89. package/dist/components/spotBeam/spotBeamMaterials.d.ts.map +1 -0
  90. package/dist/components/spotBeam/spotBeamMaterials.js +307 -0
  91. package/dist/hooks/index.d.ts +2 -0
  92. package/dist/hooks/index.d.ts.map +1 -1
  93. package/dist/hooks/index.js +1 -0
  94. package/dist/hooks/useLightConfig.d.ts +25 -0
  95. package/dist/hooks/useLightConfig.d.ts.map +1 -0
  96. package/dist/hooks/useLightConfig.js +125 -0
  97. package/dist/hooks/useLightLive.d.ts.map +1 -1
  98. package/dist/hooks/useLightLive.js +12 -2
  99. package/dist/hooks/useShadowApplication.d.ts +4 -4
  100. package/dist/hooks/useShadowApplication.d.ts.map +1 -1
  101. package/dist/hooks/useShadowApplication.js +25 -10
  102. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FluorescentTube.d.ts","sourceRoot":"","sources":["../../../src/components/fluorescentTube/FluorescentTube.tsx"],"names":[],"mappings":"AA4BA,OAAO,KAAqC,MAAM,OAAO,CAAC;AAM1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAItG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAIhE,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG;IAClD,8EAA8E;IAC9E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAChC,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACzD,CAAC;AAgCF,QAAA,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA4OnD,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -0,0 +1,262 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ // =============================================================================
3
+ // FluorescentTube — a rect-area light shaped like the tubes that make it
4
+ // =============================================================================
5
+ //
6
+ // Rendered by LightObject for `config.type === 'fluorescentTube'`.
7
+ //
8
+ // The light itself is a THREE.RectAreaLight sized to the bank of tubes, because
9
+ // that is the character of a fluorescent fixture: a long soft source that wraps
10
+ // round what it lights instead of throwing one hard shadow. Three's rect-area
11
+ // light cannot cast a shadow, so when the config asks for one a point light sits
12
+ // at the middle of the fixture carrying `shadowStrength` of the output — set it
13
+ // to 0 for a pure area light with no shadow at all. (A row of shadow-casting
14
+ // point lights would be six shadow renders each; that is the trade.)
15
+ //
16
+ // Everything else here is the behaviour of a real tube:
17
+ // - `startup: 'stutter'` strikes the arc the way a magnetic ballast does —
18
+ // two or three false starts before it catches, more as the tube ages;
19
+ // - mercury vapour then takes `warmup` seconds to reach full output;
20
+ // - `hum` is the 100/120 Hz ripple of a magnetic ballast;
21
+ // - `greenShift` is the phosphor's green spike: halophosphate tubes have a
22
+ // CRI around 80 and read distinctly green next to daylight;
23
+ // - `age` dims it, blackens the cathode ends, lengthens the strike and adds
24
+ // flicker, all from one knob.
25
+ //
26
+ // NOTE: a rect-area light only lights MeshStandardMaterial and
27
+ // MeshPhysicalMaterial. On a Phong or Lambert surface only the shadow point
28
+ // light shows.
29
+ //
30
+ import { useEffect, useMemo, useRef } from 'react';
31
+ import { useFrame } from '@react-three/fiber';
32
+ import { Color, CylinderGeometry, PlaneGeometry } from 'three';
33
+ import { RectAreaLightUniformsLib } from 'three/examples/jsm/lights/RectAreaLightUniformsLib.js';
34
+ import { SELF_OWNED_MATERIAL_KEY } from '@3driseai/3drise-core';
35
+ import { useObjectReady } from '../../hooks/useObjectReady.js';
36
+ import { useLightShadow } from '../../hooks/useLightShadow.js';
37
+ import { useLightConfig } from '../../hooks/useLightConfig.js';
38
+ import { kelvinToColor } from '../lightBulb/kelvin.js';
39
+ import { createTubeMaterials, disposeTubeMaterials, HALO_CORE, SLEEVE_CORE } from './tubeMaterials.js';
40
+ const num = (v, fallback) => (typeof v === 'number' && Number.isFinite(v) ? v : fallback);
41
+ const clamp01 = (v) => Math.min(Math.max(v, 0), 1);
42
+ const clampInt = (v, lo, hi, d) => Math.min(Math.max(typeof v === 'number' && Number.isFinite(v) ? Math.round(v) : d, lo), hi);
43
+ const hash = (n) => {
44
+ const s = Math.sin(n * 127.1) * 43758.5453;
45
+ return s - Math.floor(s);
46
+ };
47
+ const noise1 = (x) => {
48
+ const i = Math.floor(x), f = x - i, u = f * f * (3 - 2 * f);
49
+ return hash(i) * (1 - u) + hash(i + 1) * u;
50
+ };
51
+ /**
52
+ * The strike. Returns the level while the ballast is still trying, and how long
53
+ * the whole attempt lasts. An older tube needs more goes and takes longer.
54
+ */
55
+ function strike(t, age, seed) {
56
+ const tries = 2 + Math.round(age * 3);
57
+ const unit = 0.2 * (1 + age * 1.5);
58
+ const duration = tries * unit;
59
+ if (t >= duration)
60
+ return { level: 1, duration };
61
+ const i = Math.floor(t / unit);
62
+ const f = (t % unit) / unit;
63
+ // a bright flash at the top of each attempt, then the glow dies back
64
+ const level = f < 0.3 ? 0.45 + 0.45 * hash(i + seed) : 0.03 + 0.05 * hash(i * 7 + seed);
65
+ return { level, duration };
66
+ }
67
+ const FluorescentTube = ({ id, config, animations, mouseMove, settings, onObjectReady, onObjectDispose }) => {
68
+ const groupRef = useRef(null);
69
+ const lightRef = useRef(null);
70
+ const shadowLightRef = useRef(null);
71
+ const tubesRef = useRef(null);
72
+ // Rect-area lights need their BRDF lookup tables uploaded once per page.
73
+ useEffect(() => { RectAreaLightUniformsLib.init(); }, []);
74
+ useObjectReady(groupRef, settings, onObjectReady, onObjectDispose);
75
+ // The shadow settings belong to the point light — the area light has no shadow.
76
+ useLightShadow(shadowLightRef, config.shadow);
77
+ const { merged } = useLightConfig(groupRef, lightRef, id, config, animations, mouseMove);
78
+ const tubeCount = clampInt(config.tubes, 1, 4, 1);
79
+ const tubeSpacing = Math.max(num(config.tubeSpacing, 0.14), 0.02);
80
+ const length = Math.max(num(config.length, 1.2), 0.1);
81
+ const diameter = Math.min(Math.max(num(config.diameter, 0.026), 0.006), 0.12);
82
+ const geometry = useMemo(() => {
83
+ // Built along Y and laid down on X, so uv.y still runs end to end and the
84
+ // shaders can darken the cathodes.
85
+ const glass = new CylinderGeometry(diameter / 2, diameter / 2, length, 24, 1, true);
86
+ glass.rotateZ(Math.PI / 2);
87
+ const cap = new CylinderGeometry(diameter * 0.58, diameter * 0.58, diameter * 0.9, 18);
88
+ cap.rotateZ(Math.PI / 2);
89
+ const quad = new PlaneGeometry(2, 2);
90
+ return { glass, cap, quad };
91
+ }, [diameter, length]);
92
+ useEffect(() => () => {
93
+ geometry.glass.dispose();
94
+ geometry.cap.dispose();
95
+ geometry.quad.dispose();
96
+ }, [geometry]);
97
+ const mats = useMemo(() => createTubeMaterials(), []);
98
+ useEffect(() => () => disposeTubeMaterials(mats), [mats]);
99
+ // The light owns its materials and its shadow flags.
100
+ useEffect(() => {
101
+ const group = groupRef.current;
102
+ if (!group)
103
+ return;
104
+ group.userData[SELF_OWNED_MATERIAL_KEY] = true;
105
+ return () => { delete group.userData[SELF_OWNED_MATERIAL_KEY]; };
106
+ }, []);
107
+ // The tubes sit centimetres from the shadow light.
108
+ const shadowNear = config.shadow?.cameraNear;
109
+ useEffect(() => {
110
+ const light = shadowLightRef.current;
111
+ if (!light || shadowNear !== undefined)
112
+ return;
113
+ light.shadow.camera.near = 0.05;
114
+ light.shadow.camera.updateProjectionMatrix();
115
+ }, [shadowNear]);
116
+ const colorMode = (config.colorMode ?? 'temperature');
117
+ const lightColor = useMemo(() => (colorMode === 'color'
118
+ ? new Color(config.color || '#ffffff')
119
+ : kelvinToColor(config.temperature ?? 4000)), [colorMode, config.color, config.temperature]);
120
+ // The bank of tubes is the emitting rectangle.
121
+ const bankDepth = (tubeCount - 1) * tubeSpacing + diameter * 2.2;
122
+ const startup = (config.startup ?? 'stutter');
123
+ const power = useRef({
124
+ level: 0,
125
+ base: config.intensity ?? 1,
126
+ written: Number.NaN,
127
+ seed: Math.floor(Math.random() * 997),
128
+ /**
129
+ * Seconds since the switch was thrown; -1 once the tube is settled. It
130
+ * starts at 0 even for a light that loads switched on, so a fixture set
131
+ * to 'stutter' strikes when the scene opens — that is the whole reason
132
+ * to pick that mode.
133
+ */
134
+ since: 0,
135
+ wasOn: config.on ?? true,
136
+ });
137
+ const scratch = useMemo(() => ({ glow: new Color(), tint: new Color() }), []);
138
+ useFrame(({ clock }, delta) => {
139
+ const light = lightRef.current;
140
+ if (!light)
141
+ return;
142
+ const cfg = merged.current;
143
+ const p = power.current;
144
+ const dt = Math.min(delta, 0.1);
145
+ if (light.intensity !== p.written)
146
+ p.base = light.intensity;
147
+ const on = cfg.on ?? true;
148
+ const age = clamp01(num(cfg.age, 0.15));
149
+ const warmup = Math.max(num(cfg.warmup, 1.2), 0);
150
+ if (on !== p.wasOn) {
151
+ p.wasOn = on;
152
+ p.since = 0;
153
+ p.seed = Math.floor(Math.random() * 997);
154
+ }
155
+ if (p.since >= 0)
156
+ p.since += dt;
157
+ if (!on) {
158
+ // The phosphor keeps glowing for a moment after the arc goes out.
159
+ p.level += (0 - p.level) * (1 - Math.exp(-dt / 0.12));
160
+ if (p.level < 1e-4)
161
+ p.level = 0;
162
+ }
163
+ else if (startup === 'stutter' && p.since >= 0) {
164
+ const s = strike(p.since, age, p.seed);
165
+ if (p.since < s.duration) {
166
+ p.level = s.level;
167
+ }
168
+ else {
169
+ // Struck. Mercury vapour now climbs to full output.
170
+ const t = warmup <= 0 ? 1 : 1 - Math.exp(-(p.since - s.duration) * 2.6 / warmup);
171
+ p.level = t;
172
+ if (t > 0.999) {
173
+ p.level = 1;
174
+ p.since = -1;
175
+ }
176
+ }
177
+ }
178
+ else {
179
+ const tau = warmup * (startup === 'instant' ? 0.35 : 1);
180
+ p.level = tau <= 0 ? 1 : p.level + (1 - p.level) * (1 - Math.exp(-dt * 2.6 / tau));
181
+ if (p.level > 0.999) {
182
+ p.level = 1;
183
+ p.since = -1;
184
+ }
185
+ }
186
+ const t = clock.elapsedTime;
187
+ // Ballast hum: 100 Hz ripple, deeper on a tired tube.
188
+ const hum = clamp01(num(cfg.hum, 0.3));
189
+ const ripple = hum > 0 ? 1 - hum * 0.04 * (0.5 + 0.5 * Math.sin(t * Math.PI * 2 * 100)) : 1;
190
+ const flicker = clamp01(num(cfg.flicker, 0)) + age * 0.18;
191
+ let flick = 1;
192
+ if (flicker > 0.001) {
193
+ const ft = t + p.seed;
194
+ flick = 1 - Math.min(flicker, 1) * (0.12 * noise1(ft * 9) + 0.5 * Math.pow(noise1(ft * 2.3), 5));
195
+ }
196
+ // An aged tube simply puts out less light.
197
+ const output = p.level * ripple * flick * (1 - age * 0.35);
198
+ light.intensity = p.base * output;
199
+ p.written = light.intensity;
200
+ // Colour: rebuilt from the config every frame, then pushed towards the
201
+ // phosphor's green spike. It has to be rebuilt rather than nudged — a lerp
202
+ // applied to the light's own colour compounds, and after a second of frames
203
+ // the tube is pure green whatever the temperature says.
204
+ const tint = scratch.tint;
205
+ if ((cfg.colorMode ?? 'temperature') === 'color')
206
+ tint.set(cfg.color || '#ffffff');
207
+ else
208
+ kelvinToColor(num(cfg.temperature, 4000), tint);
209
+ const greenShift = clamp01(num(cfg.greenShift, 0.35));
210
+ if (greenShift > 0) {
211
+ // A channel gain rather than a blend towards a green: the spike is the
212
+ // phosphor putting out more green and less of everything else at the
213
+ // same colour temperature, and gains stay visible at small amounts
214
+ // where a blend towards a fixed colour does not.
215
+ tint.setRGB(tint.r * (1 - 0.32 * greenShift), tint.g * (1 + 0.18 * greenShift), tint.b * (1 - 0.26 * greenShift));
216
+ }
217
+ light.color.copy(tint);
218
+ light.width = length;
219
+ light.height = bankDepth;
220
+ const baseIntensity = Math.max(num(config.intensity, 1), 1e-4);
221
+ const glowK = Math.min(output * (p.base / baseIntensity), 3);
222
+ const glow = scratch.glow.copy(light.color);
223
+ // The shadow-casting core, carrying its share of the output.
224
+ const shadowLight = shadowLightRef.current;
225
+ if (shadowLight) {
226
+ const share = clamp01(num(cfg.shadowStrength, 0.4));
227
+ shadowLight.intensity = p.base * output * share;
228
+ shadowLight.color.copy(light.color);
229
+ // A fixture this size never casts a hard edge.
230
+ if (config.shadow?.radius === undefined)
231
+ shadowLight.shadow.radius = 5;
232
+ }
233
+ mats.phosphor.uniforms.uColor.value.copy(glow);
234
+ mats.phosphor.uniforms.uStrength.value = 0.05 + glowK * 1.9;
235
+ mats.phosphor.uniforms.uAge.value = age;
236
+ mats.sleeve.uniforms.uColor.value.copy(glow);
237
+ mats.sleeve.uniforms.uStrength.value = glowK * 0.45;
238
+ mats.sleeve.uniforms.uAge.value = age;
239
+ // The quad runs past the tube so the glow can wrap its ends; the shader's
240
+ // core fraction is what lines the lit part back up with the glass.
241
+ mats.sleeve.uniforms.uHalfLength.value = length / 2 / SLEEVE_CORE;
242
+ mats.sleeve.uniforms.uHalfWidth.value = diameter * 8;
243
+ const halo = Math.max(num(cfg.halo, 1), 0);
244
+ mats.halo.uniforms.uColor.value.copy(glow);
245
+ mats.halo.uniforms.uStrength.value = halo * glowK * 0.2;
246
+ // The wash is the same capsule, wider and far softer — air, not a tube.
247
+ mats.halo.uniforms.uHalfLength.value = length / 2 / HALO_CORE;
248
+ mats.halo.uniforms.uHalfWidth.value = Math.max(bankDepth, diameter * 10) * 2.2;
249
+ const bank = tubesRef.current;
250
+ if (bank)
251
+ bank.visible = (config.emitter ?? 'tubes') !== 'none';
252
+ });
253
+ // The point source exists whenever it carries any of the output; whether it
254
+ // *casts* is useLightShadow's business. Keeping those separate means toggling
255
+ // shadows off changes the shadows and not the brightness of the room.
256
+ const coreOn = num(config.shadowStrength, 0.4) > 0;
257
+ const offsets = useMemo(() => Array.from({ length: tubeCount }, (_, i) => (i - (tubeCount - 1) / 2) * tubeSpacing), [tubeCount, tubeSpacing]);
258
+ return (_jsxs("group", { ref: groupRef, children: [_jsx("rectAreaLight", { ref: lightRef,
259
+ // The emitting face looks down; width runs along the tubes.
260
+ rotation: [-Math.PI / 2, 0, 0], width: length, height: bankDepth, color: lightColor, intensity: config.intensity ?? 1 }), coreOn && (_jsx("pointLight", { ref: shadowLightRef, color: lightColor, intensity: 0, decay: config.decay ?? 1, distance: config.distance ?? 0 })), _jsx("group", { ref: tubesRef, children: offsets.map((z, i) => (_jsxs("group", { position: [0, 0, z], children: [_jsx("mesh", { geometry: geometry.glass, material: mats.phosphor, renderOrder: 2 }), _jsx("mesh", { geometry: geometry.quad, material: mats.sleeve, renderOrder: 3, frustumCulled: false }), _jsx("mesh", { geometry: geometry.cap, material: mats.cap, position: [-length / 2, 0, 0] }), _jsx("mesh", { geometry: geometry.cap, material: mats.cap, position: [length / 2, 0, 0] })] }, i))) }), _jsx("mesh", { geometry: geometry.quad, material: mats.halo, renderOrder: 5, frustumCulled: false })] }));
261
+ };
262
+ export default FluorescentTube;
@@ -0,0 +1,5 @@
1
+ export { default as FluorescentTube } from './FluorescentTube';
2
+ export type { FluorescentTubeProps } from './FluorescentTube';
3
+ export { createTubeMaterials, disposeTubeMaterials } from './tubeMaterials';
4
+ export type { TubeMaterials } from './tubeMaterials';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/fluorescentTube/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5E,YAAY,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ // A bank of fluorescent tubes with a real rect-area light (config.type 'fluorescentTube').
2
+ export { default as FluorescentTube } from './FluorescentTube.js';
3
+ export { createTubeMaterials, disposeTubeMaterials } from './tubeMaterials.js';
@@ -0,0 +1,34 @@
1
+ import { MeshStandardMaterial, ShaderMaterial } from 'three';
2
+ export interface TubeMaterials {
3
+ /** The lit phosphor, with blackened ends as it ages. */
4
+ phosphor: ShaderMaterial;
5
+ /** The air just outside the glass: a camera-facing sleeve. */
6
+ sleeve: ShaderMaterial;
7
+ /** Cathode end caps. */
8
+ cap: MeshStandardMaterial;
9
+ /** A soft camera-facing wash for the fixture as a whole. */
10
+ halo: ShaderMaterial;
11
+ }
12
+ /**
13
+ * The haze around the glass. Not a bigger cylinder — a quad that pivots about
14
+ * the tube's own axis to face the camera, which is the only way a line source
15
+ * keeps an even glow from every angle. A fatter cylinder shows its own far wall
16
+ * as a second bright edge; this does not.
17
+ */
18
+ /**
19
+ * Both glows are quads that pivot about the tube's own axis to face the camera.
20
+ * A fatter cylinder would show its own far wall as a second bright edge, and a
21
+ * plain screen-space billboard would stretch along the screen instead of along
22
+ * the tube — which is wrong the moment the fixture is not horizontal.
23
+ */
24
+ /**
25
+ * Distance to the tube's *line* rather than to its centre, normalised: 0 along
26
+ * the core, 1 at the quad's rim. Both glows are capsules round the fixture, so
27
+ * they wrap the ends instead of being cut off at them.
28
+ */
29
+ /** Fraction of each quad that is the tube itself; the rest is the rounded end. */
30
+ export declare const SLEEVE_CORE = 0.86;
31
+ export declare const HALO_CORE = 0.75;
32
+ export declare function createTubeMaterials(): TubeMaterials;
33
+ export declare function disposeTubeMaterials(m: TubeMaterials): void;
34
+ //# sourceMappingURL=tubeMaterials.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tubeMaterials.d.ts","sourceRoot":"","sources":["../../../src/components/fluorescentTube/tubeMaterials.ts"],"names":[],"mappings":"AAYA,OAAO,EAAuC,oBAAoB,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAElG,MAAM,WAAW,aAAa;IAC1B,wDAAwD;IACxD,QAAQ,EAAE,cAAc,CAAC;IACzB,8DAA8D;IAC9D,MAAM,EAAE,cAAc,CAAC;IACvB,wBAAwB;IACxB,GAAG,EAAE,oBAAoB,CAAC;IAC1B,4DAA4D;IAC5D,IAAI,EAAE,cAAc,CAAC;CACxB;AAsDD;;;;;GAKG;AACH;;;;;GAKG;AACH;;;;GAIG;AACH,kFAAkF;AAClF,eAAO,MAAM,WAAW,OAAO,CAAC;AAChC,eAAO,MAAM,SAAS,OAAO,CAAC;AA+F9B,wBAAgB,mBAAmB,IAAI,aAAa,CAOnD;AAED,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,aAAa,GAAG,IAAI,CAK3D"}
@@ -0,0 +1,185 @@
1
+ // =============================================================================
2
+ // tubeMaterials — the phosphor, the air around it, and the end caps
3
+ // =============================================================================
4
+ //
5
+ // A fluorescent tube is a long, evenly bright surface, so the glow cannot be a
6
+ // blob at a point: the phosphor cylinder is the source, and a slightly larger
7
+ // additive sleeve around it carries the haze, brightest where you look through
8
+ // the most glass. Both are drawn by hand — the viewer has no bloom.
9
+ //
10
+ // `uAge` is the knob that does the most work here. A tired tube loses output,
11
+ // and its cathodes sputter tungsten onto the glass, so the ends blacken first.
12
+ //
13
+ import { AdditiveBlending, Color, DoubleSide, MeshStandardMaterial, ShaderMaterial } from 'three';
14
+ const OUTPUT = /* glsl */ `
15
+ #include <tonemapping_fragment>
16
+ #include <colorspace_fragment>
17
+ `;
18
+ /** Shared by both cylinder materials: how far along the tube, 0..1 at the ends. */
19
+ const END_FACTOR = /* glsl */ `
20
+ float endFactor(float v, float age) {
21
+ float m = min(v, 1.0 - v) * 2.0; // 0 at an end, 1 at the middle
22
+ float ends = smoothstep(0.0, 0.22 + age * 0.3, m);
23
+ // even a new tube is a little darker at the cathodes
24
+ return mix(mix(1.0, ends, 0.3), ends * ends, age);
25
+ }`;
26
+ function phosphorMaterial() {
27
+ return new ShaderMaterial({
28
+ uniforms: {
29
+ uColor: { value: new Color(1, 1, 1) },
30
+ uStrength: { value: 0 },
31
+ uAge: { value: 0.15 },
32
+ },
33
+ vertexShader: /* glsl */ `
34
+ varying vec2 vUv;
35
+ varying vec3 vNormalV;
36
+ void main() {
37
+ vUv = uv;
38
+ vNormalV = normalize(normalMatrix * normal);
39
+ gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
40
+ }`,
41
+ fragmentShader: /* glsl */ `
42
+ uniform vec3 uColor;
43
+ uniform float uStrength;
44
+ uniform float uAge;
45
+ varying vec2 vUv;
46
+ varying vec3 vNormalV;
47
+ ${END_FACTOR}
48
+ void main() {
49
+ float lit = endFactor(vUv.y, uAge);
50
+ // the soot band right at the cathodes
51
+ float m = min(vUv.y, 1.0 - vUv.y) * 2.0;
52
+ float soot = uAge * (1.0 - smoothstep(0.0, 0.10 + uAge * 0.12, m));
53
+ // the curve of the glass: a touch brighter face-on, never black
54
+ float facing = 0.72 + 0.28 * abs(vNormalV.z);
55
+ vec3 c = uColor * uStrength * lit * facing * (1.0 - soot * 0.9);
56
+ gl_FragColor = vec4(c, 1.0);
57
+ ${OUTPUT}
58
+ }`,
59
+ side: DoubleSide,
60
+ toneMapped: false,
61
+ });
62
+ }
63
+ /**
64
+ * The haze around the glass. Not a bigger cylinder — a quad that pivots about
65
+ * the tube's own axis to face the camera, which is the only way a line source
66
+ * keeps an even glow from every angle. A fatter cylinder shows its own far wall
67
+ * as a second bright edge; this does not.
68
+ */
69
+ /**
70
+ * Both glows are quads that pivot about the tube's own axis to face the camera.
71
+ * A fatter cylinder would show its own far wall as a second bright edge, and a
72
+ * plain screen-space billboard would stretch along the screen instead of along
73
+ * the tube — which is wrong the moment the fixture is not horizontal.
74
+ */
75
+ /**
76
+ * Distance to the tube's *line* rather than to its centre, normalised: 0 along
77
+ * the core, 1 at the quad's rim. Both glows are capsules round the fixture, so
78
+ * they wrap the ends instead of being cut off at them.
79
+ */
80
+ /** Fraction of each quad that is the tube itself; the rest is the rounded end. */
81
+ export const SLEEVE_CORE = 0.86;
82
+ export const HALO_CORE = 0.75;
83
+ const CAPSULE = /* glsl */ `
84
+ float capsule(vec2 uv, float core) {
85
+ float along = max(abs(uv.x) - core, 0.0) / max(1.0 - core, 1e-3);
86
+ return length(vec2(along, uv.y));
87
+ }`;
88
+ const BILLBOARD_VERT = /* glsl */ `
89
+ uniform float uHalfLength;
90
+ uniform float uHalfWidth;
91
+ varying vec2 vUv;
92
+ void main() {
93
+ // The tube lies along local X. Both it and the quad's centre go to view
94
+ // space; the quad then opens perpendicular to the axis and to the eye.
95
+ vec3 axis = normalize((modelViewMatrix * vec4(1.0, 0.0, 0.0, 0.0)).xyz);
96
+ vec4 c = modelViewMatrix * vec4(0.0, 0.0, 0.0, 1.0);
97
+ // Open the quad across the axis *in the screen plane*: turning the
98
+ // projected axis 90 degrees. cross(axis, eye) is the textbook version and
99
+ // it collapses here, and a quad stretched along screen X ignores the
100
+ // fixture's angle entirely — this keeps the glow on the tube either way.
101
+ vec3 perp = length(axis.xy) > 1e-4
102
+ ? normalize(vec3(-axis.y, axis.x, 0.0))
103
+ : vec3(0.0, 1.0, 0.0);
104
+ float scale = length(modelMatrix[0].xyz);
105
+ vec3 p = c.xyz
106
+ + axis * (position.x * uHalfLength * scale)
107
+ + perp * (position.y * uHalfWidth * scale);
108
+ vUv = position.xy;
109
+ gl_Position = projectionMatrix * vec4(p, 1.0);
110
+ }`;
111
+ function sleeveMaterial() {
112
+ return new ShaderMaterial({
113
+ uniforms: {
114
+ uColor: { value: new Color(1, 1, 1) },
115
+ uStrength: { value: 0 },
116
+ uAge: { value: 0.15 },
117
+ /** Half the tube length and half the width of the glow, object space. */
118
+ uHalfLength: { value: 0.6 },
119
+ uHalfWidth: { value: 0.06 },
120
+ },
121
+ vertexShader: BILLBOARD_VERT,
122
+ fragmentShader: /* glsl */ `
123
+ uniform vec3 uColor;
124
+ uniform float uStrength;
125
+ uniform float uAge;
126
+ varying vec2 vUv;
127
+ ${END_FACTOR}
128
+ ${CAPSULE}
129
+ #define SLEEVE_CORE 0.86
130
+ void main() {
131
+ // vUv.x runs -1..1 end to end, vUv.y -1..1 across the glow
132
+ float lit = endFactor(clamp(vUv.x / SLEEVE_CORE, -1.0, 1.0) * 0.5 + 0.5, uAge);
133
+ float d = capsule(vUv, SLEEVE_CORE);
134
+ // Steep enough that it has reached zero before the quad's rim: in
135
+ // sRGB even 1% of linear light draws a visible edge.
136
+ float a = exp(-d * d * 10.0);
137
+ gl_FragColor = vec4(uColor * uStrength * lit * a, 1.0);
138
+ ${OUTPUT}
139
+ }`,
140
+ transparent: true,
141
+ depthWrite: false,
142
+ blending: AdditiveBlending,
143
+ });
144
+ }
145
+ function haloMaterial() {
146
+ return new ShaderMaterial({
147
+ uniforms: {
148
+ uColor: { value: new Color(1, 1, 1) },
149
+ uStrength: { value: 0 },
150
+ /** Half the length and half the width of the wash, object space. */
151
+ uHalfLength: { value: 0.8 },
152
+ uHalfWidth: { value: 0.3 },
153
+ },
154
+ vertexShader: BILLBOARD_VERT,
155
+ fragmentShader: /* glsl */ `
156
+ uniform vec3 uColor;
157
+ uniform float uStrength;
158
+ varying vec2 vUv;
159
+ ${CAPSULE}
160
+ #define HALO_CORE 0.75
161
+ void main() {
162
+ float d = capsule(vUv, HALO_CORE);
163
+ float a = exp(-d * d * 9.0);
164
+ gl_FragColor = vec4(uColor * uStrength * a, 1.0);
165
+ ${OUTPUT}
166
+ }`,
167
+ transparent: true,
168
+ depthWrite: false,
169
+ blending: AdditiveBlending,
170
+ });
171
+ }
172
+ export function createTubeMaterials() {
173
+ return {
174
+ phosphor: phosphorMaterial(),
175
+ sleeve: sleeveMaterial(),
176
+ cap: new MeshStandardMaterial({ color: 0x6f7478, metalness: 0.9, roughness: 0.42 }),
177
+ halo: haloMaterial(),
178
+ };
179
+ }
180
+ export function disposeTubeMaterials(m) {
181
+ m.phosphor.dispose();
182
+ m.sleeve.dispose();
183
+ m.cap.dispose();
184
+ m.halo.dispose();
185
+ }
@@ -159,6 +159,10 @@ export * from './water';
159
159
  export * from './effects';
160
160
  export * from './particles';
161
161
  export * from './lightBulb';
162
+ export * from './spotBeam';
163
+ export * from './ledArray';
164
+ export * from './fluorescentTube';
165
+ export * from './candle';
162
166
  export type { LandscapeBuilderProps } from './LandscapeBuilder';
163
167
  export { default as LandscapeBuilder } from './LandscapeBuilder';
164
168
  export type { LandscapeObjectProps } from './LandscapeObject';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
@@ -103,6 +103,10 @@ export * from './water/index.js';
103
103
  export * from './effects/index.js';
104
104
  export * from './particles/index.js';
105
105
  export * from './lightBulb/index.js';
106
+ export * from './spotBeam/index.js';
107
+ export * from './ledArray/index.js';
108
+ export * from './fluorescentTube/index.js';
109
+ export * from './candle/index.js';
106
110
  export { default as LandscapeBuilder } from './LandscapeBuilder.js';
107
111
  export { default as LandscapeObject } from './LandscapeObject.js';
108
112
  export * from './landscape/index.js';
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import type { AnimationOptions, CreatedObjectSettings, MouseMoveDomain } from '@3driseai/3drise-core';
3
+ import type { ObjectReadyProps } from '../../types/objectReady';
4
+ export type LedArrayProps = ObjectReadyProps & {
5
+ /** Scene object id: the light controller finds the live-edit handle by it. */
6
+ id?: string;
7
+ config: Record<string, any>;
8
+ animations?: AnimationOptions[];
9
+ mouseMove?: MouseMoveDomain;
10
+ settings: CreatedObjectSettings | Record<string, any>;
11
+ };
12
+ declare const LedArray: React.FC<LedArrayProps>;
13
+ export default LedArray;
14
+ //# sourceMappingURL=LedArray.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LedArray.d.ts","sourceRoot":"","sources":["../../../src/components/ledArray/LedArray.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAqC,MAAM,OAAO,CAAC;AAK1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAItG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAMhE,MAAM,MAAM,aAAa,GAAG,gBAAgB,GAAG;IAC3C,8EAA8E;IAC9E,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAChC,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,QAAQ,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACzD,CAAC;AAgBF,QAAA,MAAM,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CA4OrC,CAAC;AAEF,eAAe,QAAQ,CAAC"}