Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/pissang/claygl
A WebGL graphic library for building scalable Web3D applications
https://github.com/pissang/claygl
3d gltf visualization webgl
Last synced: 24 days ago
JSON representation
A WebGL graphic library for building scalable Web3D applications
- Host: GitHub
- URL: https://github.com/pissang/claygl
- Owner: pissang
- License: bsd-2-clause
- Created: 2013-05-21T02:09:59.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2024-03-02T04:01:50.000Z (8 months ago)
- Last Synced: 2024-04-14T07:52:34.804Z (7 months ago)
- Topics: 3d, gltf, visualization, webgl
- Language: JavaScript
- Homepage: http://claygl.xyz/
- Size: 57.5 MB
- Stars: 2,744
- Watchers: 129
- Forks: 301
- Open Issues: 42
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-game-engine-dev - ClayGL - WebGL library for scalable Web3D applications. (Libraries / JavaScript)
- awesome-list - claygl
README
ClayGL[![NPM Version](https://img.shields.io/npm/v/claygl.svg)](https://github.com/pissang/claygl)
[![Circle CI](https://circleci.com/gh/pissang/claygl.svg?style=shield)](https://circleci.com/gh/pissang/claygl)ClayGL is a WebGL graphic library for building scalable Web3D applications.
It's easy to use, configurable for high-quality graphics. Benefit from the modularity and tree shaking, it can be scaled down to 22k(gzipped) for a basic 3D application.
#### [Download](https://github.com/pissang/claygl/releases)
#### [API](http://docs.claygl.xyz/api)
#### [Examples](http://examples.claygl.xyz)
## Projects
[ECharts GL](https://github.com/ecomfe/echarts-gl)
[Clay Viewer](https://github.com/pissang/clay-viewer)
[DOTA2 Hero Viewer](https://github.com/pissang/dota2hero)
[Paper Cut Art Generator](https://github.com/pissang/papercut-box-art)
[Little Big City](https://github.com/pissang/little-big-city)
## Quick Start
##### Create a rotating cube
```html
clay.application.create('#main', {width: window.innerWidth,
height: window.innerHeight,init(app) {
// Create camera
this._camera = app.createCamera([0, 2, 5], [0, 0, 0]);// Create a RED cube
this._cube = app.createCube({
color: '#f00'
});// Create light
this._mainLight = app.createDirectionalLight([-1, -1, -1]);
},
loop(app) {
this._cube.rotation.rotateY(app.frameTime / 1000);
}
});
```
#### Minimum bundle example
This example is about 22k(gzipped) after bundled by webpack 4.0. It draws a triangle on the screen.
```js
import { Renderer, GeometryBase, Shader, Material } from 'claygl';const vsCode = `
attribute vec3 position: POSITION;
void main() {
gl_Position = vec4(position, 1.0);
}
`;
const fsCode = `
void main() {
gl_FragColor = vec4(0.0, 0.0, 1.0, 1.0);
}
`;const renderer = new Renderer({
canvas: document.getElementById('main')
});
renderer.resize(400, 400);const geometry = new GeometryBase();
geometry.createAttribute('position', 'float', 3);
// Add triangle vertices to position attribute.
geometry.attributes.position.fromArray([
[-0.5, -0.5, 0],
[0.5, -0.5, 0],
[0, 0.5, 0]
]);const material = new Material({
shader: new Shader(vsCode, fsCode)
});
renderer.renderPass([ { geometry, material } ]);
```### FBX to glTF2.0 Converter
[Get it](https://github.com/pissang/claygl/blob/master/tools/fbx2gltf.py)
Needs [python3.3](https://www.python.org/download/releases/3.3.0/) and [FBX SDK 2018.1.1](http://usa.autodesk.com/adsk/servlet/pc/item?siteID=123112&id=26416130).
```
usage: fbx2gltf.py [-h] [-e EXCLUDE] [-t TIMERANGE] [-o OUTPUT]
[-f FRAMERATE] [-p POSE] [-q] [-b]
fileFBX to glTF converter
positional arguments:
fileoptional arguments:
-h, --help show this help message and exit
-e EXCLUDE, --exclude EXCLUDE
Data excluded. Can be: scene,animation
-t TIMERANGE, --timerange TIMERANGE
Export animation time, in format
'startSecond,endSecond'
-o OUTPUT, --output OUTPUT
Ouput glTF file path
-f FRAMERATE, --framerate FRAMERATE
Animation frame per second
-p POSE, --pose POSE Start pose time
-q, --quantize Quantize accessors with WEB3D_quantized_attributes
extension
-b, --binary Export glTF-binary
--beautify Beautify json output.
--noflipv If not flip v in texcoord.
```Input:
+ FBX
+ COLLADA
+ OBJOutput:
+ Scene hierarchy
+ Mesh and camera
+ PBR material
+ Texture
+ Skin
+ Animation