obj3cts
Sign in
v0.1 · beta · web-ready 3D

3D objects for the web,
with code included.

Generate or upload decorative 3D assets. Obj3cts validates them, generates Three.js and React Three Fiber code, and packages everything as a downloadable bundle.

FORMAT

GLB 2.0

OUTPUTS

Three.js · R3F

VALIDATOR

Khronos

floating-crystal-cluster.glbVIEWPORT
INIT VIEWPORT
5,184 △ · 1.24 MB · 1 MAT● WEB-READY

00 / How it works

Upload to web-ready, in seconds.

The pipeline is deterministic. Templates over freeform code. Validation, optimization, and code generation all happen before you see the bundle.

  1. 01

    Generate or upload

    Drop a .glb file, or describe the object you want. Obj3cts orchestrates the pipeline.

  2. 02

    Auto-validate

    Khronos glTF Validator. Triangle counts. Texture sizes. Materials. Web-ready checks.

  3. 03

    Download bundle

    Optimized GLB, Three.js scene, R3F component, README, license. All zipped.

01 / Generated code

Same model. Same code.

Three.js scene, R3F component, and static HTML. All template-based — no AI guessing at imports or invoking hallucinated APIs.

  • Vanilla Three.js scene
  • gltfjsx-generated R3F
  • Static HTML index
  • Source-code attribution
// 3D asset from Obj3cts.com — Floating Crystal Cluster
// Attribution required by the selected asset license.
// https://obj3cts.com

import { Canvas, useFrame } from '@react-three/fiber';
import { OrbitControls, useGLTF, Environment } from '@react-three/drei';
import { Suspense, useRef } from 'react';
import * as THREE from 'three';

function Model() {
  const { scene } = useGLTF('/models/model.glb');
  const ref = useRef<THREE.Group>(null);
  useFrame((_, delta) => {
    if (ref.current) ref.current.rotation.y += delta * 0.2;
  });
  return <primitive ref={ref} object={scene} />;
}

useGLTF.preload('/models/model.glb');

export function Scene() {
  return (
    <Canvas shadows camera={{ fov: 35, position: [2.4, 1.6, 2.4] }}>
      <color attach="background" args={['#0a0a09']} />
      <Suspense fallback={null}>
        <Environment preset="city" />
        <Model />
        <ambientLight intensity={0.4} />
        <directionalLight position={[3, 5, 2]} intensity={1.2} castShadow />
      </Suspense>
      <OrbitControls enableDamping dampingFactor={0.08} />
    </Canvas>
  );
}

02 / Featured

Recently published.

All assets →
@rune.cn
1.9K·402.3 KB·3 MATWeb-Ready
@studio.k·VERIFIED
38.5K·8.7 MB·4 MATWarnings
@iro
2.1K·115.2 KB·1 MATWeb-Ready
@vector-shop
24.3K·7.3 MB·2 MATWeb-Ready
@m87
18.9K·8.2 MB·1 MATWeb-Ready

03 / What's in the bundle

One zip.
Everything you need.

Optimized model, decimated preview, Three.js scene, R3F component, static HTML, README, license, attribution, and the full quality report.

modelthreer3fmetaREADMELICENSEATTRIBUTION
obj3cts-floating-crystal-cluster/
├─ README.md4.2 KB
├─ LICENSE.md1.8 KB
├─ ATTRIBUTION.md0.4 KB
├─ model/
│  ├─ model.glb1.24 MB
│  ├─ preview.glb0.18 MB
│  └─ thumbnail.png14 KB
├─ three/
│  ├─ scene.js2.1 KB
│  ├─ index.html0.9 KB
│  └─ package-snippet.json0.2 KB
├─ r3f/
│  ├─ Model.tsx1.8 KB
│  ├─ Scene.tsx1.4 KB
│  └─ package-snippet.json0.2 KB
└─ meta/
   ├─ objspec.json1.6 KB
   ├─ quality-check.json2.4 KB
   ├─ validation-report.json0.9 KB
   └─ optimization-report.json1.1 KB

04 / Quality

Web-Ready means
something specific.

Every published asset goes through automated validation. Only listings that pass all checks earn the Web-Ready badge. Everything else publishes with visible warnings or stays in drafts.

Community can flag any listing. Serious flags escalate to review.

auto-checkedWEB-READY
  • Loads in browser
  • glTF Validator passes
  • Under 10 MB filesize
  • Under 50K triangles
  • Textures ≤ 2048px
  • No missing textures
  • Three.js code generated
  • R3F component generated
  • Reasonable scale + origin
  • License + attribution included

05 / Marketplace

Publish free. Sell paid. Keep 80%.

Creators choose free or paid at publish time. Stripe Connect handles payouts. 80% to you, 20% covers validation, packaging, hosting, and payment infrastructure.

Free$1$3$5$9$19Custom

06 / FAQ

Common questions.

The marketplace mechanics, the licensing rules, what's in the MVP, what's deferred.

Read full reference
Is the code AI-generated?+
No. The model can be AI-generated (via Meshy or another provider). The code is template-based: deterministic Three.js scene, gltfjsx-driven R3F component, static HTML index. Same model → same code, every time.
What formats are supported?+
GLB only in the MVP. Other formats (.gltf, .obj, .fbx, .stl, .blend) arrive later. GLB-first because glTF 2.0 is the open standard for web-ready 3D and most tooling already exports it.
Can I sell what I generate?+
Yes. Every asset you generate or upload can be listed as Free or Paid (creators keep 80%). AI-generated assets are visibly labeled. Quality is auto-checked and the community can flag issues.
Do I have to credit Obj3cts?+
Yes — but only in the source code, not visibly on your site. Every generated file ships with a small comment referencing Obj3cts. That's the attribution requirement.
Can someone remix my asset?+
Not by default. Remix is off by default; buyers can use, modify, and animate your asset inside their websites, but they cannot republish it as a derivative model or sell it elsewhere.
Is this for 3D printing?+
Not yet. Obj3cts is focused on decorative 3D assets for websites. 3D-printable assets are a separate category, planned for later — different validation (watertight geometry, real-world scale, printability claims).

Ready to ship 3D?

Open the gallery or generate your first object now.

obj3cts·obj3cts.com·open beta