{
  "id": 14631555,
  "title": "Wall-impact sparks: test the normal before tuning the glow",
  "url": "https://urgent.news/2026/10/15/wall-impact-sparks-test-the-normal-before-tuning-the-glow",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-15T06:46:36.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/hiroshi_takamura_c851fe71/wall-impact-sparks-test-the-normal-before-tuning-the-glow-19hb"
  },
  "original_language": "en",
  "account": "A laser impact requires two inputs: a hit position and an outward surface normal. A Three.js demo uses a fixed planar wall to emit 32 particles for testing. The particles move in the positive Z direction from an origin just in front of the wall. The source material provides details on emitter settings, particle lifetime, and velocity ranges. Ensure the normal is correctly transformed from mesh-local to world space, as translating it like a position is a common mistake when dealing with nonuniform scale. Test the simple case before rotating the wall; the outward normal is [0,0,1] in this case. After the burst finishes, remove the effect or reuse it with an explicit ownership policy.",
  "summary": "A laser impact needs two inputs from the game: a hit position and an outward surface normal. The particle effect should consume those inputs. It should not invent a collision result from a bright spot on a wall. This small Three.js demo uses a fixed planar wall facing positive Z and a synthetic hit at its center. It emits 32 unlit particles and pauses after 18 fixed simulation steps so the…",
  "key_points": [
    "Laser impact requires hit position and outward surface normal",
    "Three.js demo uses fixed planar wall with 32 particles",
    "Ensure normal correctly transformed from mesh-local to world space"
  ],
  "editors_take": "Prioritizing planar testing over complex geometry ensures that coordinate transformations are correctly handled before developers attempt to implement more difficult particle effects on rotated or scaled surfaces.",
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}