pmndrs / pmndrs/three-stdlib

SketchUp (.skp) loader

Open
#437 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
JavaScript
Stars
858
Forks
144
PR merge metrics
No merged PRs in 30d

Description

Describe the feature you'd like:

A SKPLoader for native SketchUp (.skp) files — three-stdlib has loaders for most common 3D formats, but nothing for .skp. Today the only way to get a SketchUp model into a Three.js scene is exporting to glTF/OBJ from SketchUp first (needs SketchUp installed), or routing through a server-side conversion service.

Also posted as a discussion for open conversation before committing to a specific implementation: #436

Suggested implementation:

OpenSKP is an MIT-licensed, from-scratch .skp reader — no Trimble SDK, no native binary, pure TypeScript, works in both Node and the browser (openskp on npm). It already parses geometry, materials, layers, and instancing, and can bake a full triangulated scene via buildScene().

A SKPLoader extends Loader would read the file into an ArrayBuffer, call SkpFile.fromBuffer(buffer).buildScene(), and walk the result into THREE.Group/BufferGeometry/MeshStandardMaterial, the same shape OBJLoader/GLTFLoader already follow. There's a working reference implementation doing exactly this in OpenSKP's own example viewer (examples/web-viewer), so this wouldn't start from zero. Happy to put together the PR myself if this is wanted.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with OpenSKP's examples/web-viewer and its SkpFile.fromBuffer(buffer).buildScene() entry point, then compare the existing OBJLoader and GLTFLoader shapes in three-stdlib. Confirm the desired approach in discussion #436. Done means a SKPLoader can read native .skp data and map the parsed scene into THREE.Group, BufferGeometry, and MeshStandardMaterial.

Written by the indexing model from the issue text.

Assessment

Tech stack
three.js, typescript
Domain
computer-graphics
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.