# Shirt on a hanger, blue (Clothing Rail and Wardrobe)

The same shirt in navy with an off white collar and placket, so a rail of shirts is not one colour. Geometry and hanger are identical to the off white shirt.

- **URL:** https://3dassets.dev/assets/clothing-rail-and-wardrobe-shirt-on-hanger-blue-de94ebc7
- **GLB (direct, CORS *, immutable):** https://cdn.3dassets.dev/assets/35450/v1/model.glb
- **Download (counted):** https://3dassets.dev/download/clothing-rail-and-wardrobe-shirt-on-hanger-blue-de94ebc7
- **Licence:** CC0 1.0 Universal: https://creativecommons.org/publicdomain/zero/1.0/ (no attribution required)
- **Contributor:** 3D Assets (@3dassets): https://3dassets.dev/u/3dassets
- **Category:** Props & Furniture
- **Tags:** Modern, Realistic, Interior
- **Geometry:** 1,364 triangles, 2,980 vertices, 4 meshes, 4 materials, 0 textures
- **Size (m):** 0.624 × 0.851 × 0.15
- **Animations:** none
- **File size:** 0.06 MB
- **Downloads:** 0
- **AI used (contributor-reported):** yes; model: Claude Opus 5

## About

The same shirt in navy with an off white collar and placket, so a rail of shirts is not one colour. Geometry and hanger are identical to the off white shirt. Dimensions 0.62 by 0.85 by 0.15 m (X by Y by Z). Metre units, +Y up, front toward +Z. The origin is free and sits at the point where the hook rests down on a rail, so placing it at a rail top hangs it on the rail. It hangs on its hanger: the whole model, garment and hanger together, sits below the origin, so dropping it at a rail top puts it on the rail. The fabric is static geometry in a settled pose: there is no cloth simulation and no skinning in this library, so nothing here drapes, swings or creases at runtime. Every swing ticket, size cube face, neck label and sign panel is blank: no clothing brand, retailer or trade dress anywhere in this pack. Static geometry; no rig, collision or navigation data.

## Use with three.js

```js
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js'

const loader = new GLTFLoader()
loader.load('https://cdn.3dassets.dev/assets/35450/v1/model.glb', (gltf) => {
  scene.add(gltf.scene)
})
```

## React Three Fiber

```jsx
import { useGLTF } from '@react-three/drei'

export function ShirtOnAHangerBlueClothingRailAndWardrobe(props) {
  const { scene } = useGLTF('https://cdn.3dassets.dev/assets/35450/v1/model.glb')
  return <primitive object={scene} {...props} />
}
useGLTF.preload('https://cdn.3dassets.dev/assets/35450/v1/model.glb')
```

## <model-viewer>

```html
<model-viewer src="https://cdn.3dassets.dev/assets/35450/v1/model.glb" alt="Shirt on a hanger, blue (Clothing Rail and Wardrobe)" camera-controls auto-rotate></model-viewer>
```

## Blender

```python
# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.
import bpy
bpy.ops.import_scene.gltf(filepath='model.glb')  # from https://cdn.3dassets.dev/assets/35450/v1/model.glb
# Metres and +Y up are converted to Blender's Z-up scene automatically.
```

## Godot

```gdscript
# Godot 4: copy model.glb into res://models/ and the editor imports it as a scene.
var packed := load("res://models/model.glb") as PackedScene
var model := packed.instantiate()
add_child(model)
```

## Unity

```csharp
// Unity: import model.glb with glTFast (Package Manager: com.unity.cloud.gltfast) and drag the prefab in,
// or load it at runtime straight from the CDN:
using GLTFast;
var gltf = new GltfImport();
if (await gltf.Load("https://cdn.3dassets.dev/assets/35450/v1/model.glb")) await gltf.InstantiateMainSceneAsync(transform);
```

---
JSON: https://3dassets.dev/api/v1/assets/clothing-rail-and-wardrobe-shirt-on-hanger-blue-de94ebc7 · Loads with a plain GLTFLoader: no Draco/KTX2 loaders needed.