Skip to content

Commit 18ebcf7

Browse files
authored
fix: [Trail] clean up gui and disable frustum culling when using instanced mesh (#95)
1 parent 48ed230 commit 18ebcf7

File tree

2 files changed

+19
-13
lines changed

2 files changed

+19
-13
lines changed

.storybook/stories/Trail.stories.ts

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ export const TrailStory = async () => {
3030
controls.target.set(0, 2, 0)
3131
controls.update()
3232

33+
const dirLight = new THREE.DirectionalLight(0xffffff, 1)
34+
scene.add(dirLight)
35+
3336
scene.add(new THREE.AxesHelper())
3437

3538
scene.background = new THREE.Color(0x666666)
@@ -87,13 +90,13 @@ function setupLineTrail() {
8790

8891
const fol = gui.addFolder('Trail')
8992
fol.onChange(() => trail.rebuildTrail(trailParams))
90-
fol.addColor(trailParams, 'color').name('Trail Color')
91-
fol.add(trailParams, 'length', 1, 50, 0.1).name('Trail Length')
92-
fol.add(trailParams, 'width', 0, 20, 0.1).name('Trail Width')
93-
fol.add(trailParams, 'decay', 0, 1, 0.01).name('Trail Decay')
94-
fol.add(trailParams, 'stride', 0, 0.05, 0.01).name('Trail Stride')
93+
fol.addColor(trailParams, 'color').name('Color')
94+
fol.add(trailParams, 'length', 1, 50, 0.1).name('Length')
95+
fol.add(trailParams, 'width', 0, 20, 0.1).name('Width')
96+
fol.add(trailParams, 'decay', 0, 1, 0.01).name('Decay')
97+
fol.add(trailParams, 'stride', 0, 0.05, 0.01).name('Stride')
9598
fol.add(trailParams, 'local').name('Local Space')
96-
fol.add(trailParams, 'interval', 1, 60, 1).name('Trail Interval')
99+
fol.add(trailParams, 'interval', 1, 60, 1).name('Update Interval')
97100

98101
const onUpdate = () => {
99102
rotateSourceMesh()
@@ -129,9 +132,10 @@ function setupInstanceTrail() {
129132
attenuation: (width) => width,
130133
target: sourceMesh,
131134
color: new THREE.Color('red'),
135+
instanceCount: 10,
132136

133137
geometry: new THREE.OctahedronGeometry(0.5),
134-
material: new THREE.MeshNormalMaterial(),
138+
material: new THREE.MeshMatcapMaterial(),
135139
}
136140

137141
const trail = new Trail(trailParams)
@@ -140,13 +144,14 @@ function setupInstanceTrail() {
140144

141145
const fol = gui.addFolder('Instance Trail')
142146
fol.onChange(() => trail.rebuildTrail(trailParams))
143-
fol.addColor(trailParams, 'color').name('Trail Color')
144-
fol.add(trailParams, 'length', 1, 50, 0.1).name('Trail Length')
145-
fol.add(trailParams, 'width', 0, 20, 0.1).name('Trail Width')
146-
fol.add(trailParams, 'decay', 0, 1, 0.01).name('Trail Decay')
147-
fol.add(trailParams, 'stride', 0, 1, 0.01).name('Trail Stride')
147+
fol.addColor(trailParams, 'color').name('Color')
148+
fol.add(trailParams, 'length', 1, 50, 0.1).name('Length')
149+
fol.add(trailParams, 'width', 0, 20, 0.1).name('Width')
150+
fol.add(trailParams, 'decay', 0, 1, 0.01).name('Decay')
151+
fol.add(trailParams, 'stride', 0, 1, 0.01).name('Stride')
148152
fol.add(trailParams, 'local').name('Local Space')
149-
fol.add(trailParams, 'interval', 1, 60, 1).name('Trail Interval')
153+
fol.add(trailParams, 'interval', 1, 60, 1).name('Update Interval')
154+
fol.add(trailParams, 'instanceCount', 5, 30, 1).name('Instance Count')
150155

151156
const rendererSize = new THREE.Vector2()
152157
const onResize = () => {

src/core/Trail.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ export class Trail extends THREE.Group {
116116
let mesh: THREE.InstancedMesh | THREE.Mesh
117117
if (props.geometry) {
118118
const iMesh = new THREE.InstancedMesh(geometry, material, props.instanceCount || defaults.instanceCount)
119+
iMesh.frustumCulled = false
119120
iMesh.instanceMatrix.setUsage(THREE.DynamicDrawUsage)
120121
mesh = iMesh
121122
} else {

0 commit comments

Comments
 (0)