All skills
skilld-dev avatar

/tresjs-core-skilld

@b9c39cb

Declarative Three.js using Vue components. ALWAYS use when writing code that imports "@tresjs/core" or touches TresCanvas, Tres components, useLoop, useLoader, useTres, useTresContext, TresPortal, pointer events, render modes, or TresJS debugging, upgrades, and performance work.

Use this Skill: https://skilld.dev/gh/skilld-dev/vue-ecosystem-skills/tresjs-core-skilld

This session only. Nothing lands on disk.

referencespointer-events.md

≈461 tokens on demand. Your agent reads this file only when SKILL.md points to it.

Pointer events

https://docs.tresjs.org/api/events/pointer-events

Event system is built on @pmndrs/pointer-events (package.json:48). Events are auto-enabled on TresCanvas; no setup needed.

Names

Exact DOM names (dist/tres.d.ts:379-381): click, contextmenu, dblclick, pointerdown, pointerup, pointercancel, pointermove, pointerover, pointerout, pointerenter, pointerleave, wheel, lostpointercapture.

In templates: @click, @pointerdown, @pointerenter, ... In kebab components: @dblclick (v5 removed the old @pointer-down dashed form).

Hit rules since v5

  • Raycasting drives hit testing; only the first intersected object fires the event (no bubbling through overlapping meshes). Handle overlapping interactive objects on a common parent (TresGroup @click).
  • pointerover/pointerout bubble from children; pointerenter/pointerleave do not.
  • @pointermissed on TresCanvas fires when a click hits no object (dist/tres.d.ts:334-347).

Payload

Handlers receive a TresPointerEvent (a PointerEvent<MouseEvent> from @pmndrs/pointer-events, dist/tres.d.ts:382):

  • event.point: world-space hit position
  • event.object: hit Three.js object (mutate it directly: e.object.material.color.set('red'))
  • event.distance, event.face, event.uv, event.xy

Example

<script setup lang="ts">
function onClick(e) {
  e.object.material.color.set(Math.random() * 0xffffff)
}
</script>

<template>
  <TresCanvas @pointermissed="deselect">
    <TresMesh @click="onClick" @pointerenter="onEnter" @pointerleave="onLeave">
      <TresBoxGeometry />
      <TresMeshNormalMaterial />
    </TresMesh>
  </TresCanvas>
</template>

Only objects with a raycast method can receive events (EventProps gate, dist/tres.d.ts:486-489). <primitive> supports the same events.

Source: SKILL.md on GitHub

No alerts8d3 checks · Risk SAFE
  • Gen Agent Trust Hub8d

    The skill is a comprehensive documentation and best-practices guide for TresJS (Three.js for Vue). It provides instructions for installation, animation, and scene management, referencing official assets and standard libraries. No malicious patterns were detected.

  • Socket8d

    No alerts

  • Snyk8d

    Risk: LOW · No issues

Signed by skilld at b9c39cb. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub last week.

Activeupdated last week

README badge

README badge for skilld-dev/vue-ecosystem-skills/tresjs-core-skilld