@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.
- package/dist/components/CreatedObject.d.ts.map +1 -1
- package/dist/components/CreatedObject.js +6 -1
- package/dist/components/LightObject.d.ts.map +1 -1
- package/dist/components/LightObject.js +24 -13
- package/dist/components/ModelPrimitive.d.ts.map +1 -1
- package/dist/components/ModelPrimitive.js +4 -6
- package/dist/components/ObjectNode.js +1 -1
- package/dist/components/ParticlesGenerator.d.ts +3 -1
- package/dist/components/ParticlesGenerator.d.ts.map +1 -1
- package/dist/components/ParticlesGenerator.js +2 -2
- package/dist/components/ProjectLoader.js +1 -1
- package/dist/components/SceneBuilder.d.ts.map +1 -1
- package/dist/components/SceneBuilder.js +5 -1
- package/dist/components/candle/Candle.d.ts +14 -0
- package/dist/components/candle/Candle.d.ts.map +1 -0
- package/dist/components/candle/Candle.js +249 -0
- package/dist/components/candle/candleGeometry.d.ts +23 -0
- package/dist/components/candle/candleGeometry.d.ts.map +1 -0
- package/dist/components/candle/candleGeometry.js +73 -0
- package/dist/components/candle/candleMaterials.d.ts +24 -0
- package/dist/components/candle/candleMaterials.d.ts.map +1 -0
- package/dist/components/candle/candleMaterials.js +433 -0
- package/dist/components/candle/flameMotion.d.ts +64 -0
- package/dist/components/candle/flameMotion.d.ts.map +1 -0
- package/dist/components/candle/flameMotion.js +138 -0
- package/dist/components/candle/index.d.ts +9 -0
- package/dist/components/candle/index.d.ts.map +1 -0
- package/dist/components/candle/index.js +6 -0
- package/dist/components/fluorescentTube/FluorescentTube.d.ts +14 -0
- package/dist/components/fluorescentTube/FluorescentTube.d.ts.map +1 -0
- package/dist/components/fluorescentTube/FluorescentTube.js +262 -0
- package/dist/components/fluorescentTube/index.d.ts +5 -0
- package/dist/components/fluorescentTube/index.d.ts.map +1 -0
- package/dist/components/fluorescentTube/index.js +3 -0
- package/dist/components/fluorescentTube/tubeMaterials.d.ts +34 -0
- package/dist/components/fluorescentTube/tubeMaterials.d.ts.map +1 -0
- package/dist/components/fluorescentTube/tubeMaterials.js +185 -0
- package/dist/components/index.d.ts +4 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.js +4 -0
- package/dist/components/ledArray/LedArray.d.ts +14 -0
- package/dist/components/ledArray/LedArray.d.ts.map +1 -0
- package/dist/components/ledArray/LedArray.js +243 -0
- package/dist/components/ledArray/index.d.ts +7 -0
- package/dist/components/ledArray/index.d.ts.map +1 -0
- package/dist/components/ledArray/index.js +4 -0
- package/dist/components/ledArray/ledLayout.d.ts +22 -0
- package/dist/components/ledArray/ledLayout.d.ts.map +1 -0
- package/dist/components/ledArray/ledLayout.js +59 -0
- package/dist/components/ledArray/ledMaterials.d.ts +14 -0
- package/dist/components/ledArray/ledMaterials.d.ts.map +1 -0
- package/dist/components/ledArray/ledMaterials.js +151 -0
- package/dist/components/lightBulb/LightBulb.d.ts.map +1 -1
- package/dist/components/lightBulb/LightBulb.js +10 -13
- package/dist/components/particles/BioluminescentWakeParticles.d.ts +3 -1
- package/dist/components/particles/BioluminescentWakeParticles.d.ts.map +1 -1
- package/dist/components/particles/BioluminescentWakeParticles.js +7 -3
- package/dist/components/particles/BrownianDustParticles.d.ts +3 -1
- package/dist/components/particles/BrownianDustParticles.d.ts.map +1 -1
- package/dist/components/particles/BrownianDustParticles.js +7 -3
- package/dist/components/particles/ChladniSandParticles.d.ts +3 -1
- package/dist/components/particles/ChladniSandParticles.d.ts.map +1 -1
- package/dist/components/particles/ChladniSandParticles.js +7 -3
- package/dist/components/particles/ElectronOrbitalsParticles.d.ts +3 -1
- package/dist/components/particles/ElectronOrbitalsParticles.d.ts.map +1 -1
- package/dist/components/particles/ElectronOrbitalsParticles.js +7 -3
- package/dist/components/particles/FaradayPowderParticles.d.ts +3 -1
- package/dist/components/particles/FaradayPowderParticles.d.ts.map +1 -1
- package/dist/components/particles/FaradayPowderParticles.js +7 -3
- package/dist/components/particles/GrinderSparksParticles.d.ts +3 -1
- package/dist/components/particles/GrinderSparksParticles.d.ts.map +1 -1
- package/dist/components/particles/GrinderSparksParticles.js +7 -3
- package/dist/components/particles/NeonRainParticles.d.ts +3 -1
- package/dist/components/particles/NeonRainParticles.d.ts.map +1 -1
- package/dist/components/particles/NeonRainParticles.js +7 -3
- package/dist/components/particles/TidalStreamParticles.d.ts +3 -1
- package/dist/components/particles/TidalStreamParticles.d.ts.map +1 -1
- package/dist/components/particles/TidalStreamParticles.js +7 -3
- package/dist/components/spotBeam/SpotBeam.d.ts +14 -0
- package/dist/components/spotBeam/SpotBeam.d.ts.map +1 -0
- package/dist/components/spotBeam/SpotBeam.js +244 -0
- package/dist/components/spotBeam/beamPatterns.d.ts +11 -0
- package/dist/components/spotBeam/beamPatterns.d.ts.map +1 -0
- package/dist/components/spotBeam/beamPatterns.js +106 -0
- package/dist/components/spotBeam/index.d.ts +7 -0
- package/dist/components/spotBeam/index.d.ts.map +1 -0
- package/dist/components/spotBeam/index.js +4 -0
- package/dist/components/spotBeam/spotBeamMaterials.d.ts +16 -0
- package/dist/components/spotBeam/spotBeamMaterials.d.ts.map +1 -0
- package/dist/components/spotBeam/spotBeamMaterials.js +307 -0
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -0
- package/dist/hooks/useLightConfig.d.ts +25 -0
- package/dist/hooks/useLightConfig.d.ts.map +1 -0
- package/dist/hooks/useLightConfig.js +125 -0
- package/dist/hooks/useLightLive.d.ts.map +1 -1
- package/dist/hooks/useLightLive.js +12 -2
- package/dist/hooks/useShadowApplication.d.ts +4 -4
- package/dist/hooks/useShadowApplication.d.ts.map +1 -1
- package/dist/hooks/useShadowApplication.js +25 -10
- 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,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":"AAIA,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,YAAY,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC7F,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAG1C,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAC1E,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACxD,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtD,YAAY,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACpE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACxD,YAAY,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACxC,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChE,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC1D,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,YAAY,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGxD,OAAO,EAAE,cAAc,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,OAAO,IAAI,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,mBAAmB,EAAE,MAAM,QAAQ,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,kCAAkC,EAAE,MAAM,yBAAyB,CAAC;AACpG,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,QAAQ,CAAC;AACzC,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAO9C,OAAO,EACL,QAAQ,EACR,YAAY,EACZ,WAAW,EACX,aAAa,EACb,WAAW,EACX,YAAY,EACZ,MAAM,EACN,cAAc,EACd,gBAAgB,EAChB,gBAAgB,IAAI,gBAAgB,EACpC,UAAU,EACV,SAAS,GACV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGtD,cAAc,UAAU,CAAC;AACzB,cAAc,oBAAoB,CAAC;AACnC,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"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"}
|
package/dist/components/index.js
CHANGED
|
@@ -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"}
|