Zdog Round, flat, designer-friendly

pseudo-3D engine for canvas & SVG Zdog on GitHub 7500

Made with Zdog

What is Zdog?

Zdog is a 3D JavaScript engine for <canvas> and SVG. With Zdog, you can design and render simple 3D models on the Web. Zdog is a pseudo-3D engine. Its geometries exist in 3D space, but are rendered as flat shapes. This makes Zdog special.

Zdog is small. 2,100 lines of code for the entire library. 28KB minified.

2,100 lines of code for the entire library. 28KB minified. Zdog is round. All circular shapes are rendered as proper circles with rounded edges. No polygonal jaggies.

All circular shapes are rendered as proper circles with rounded edges. No polygonal jaggies. Zdog is friendly. Modeling is done with a straight-forward declarative API.

Zdog was designed to bring the simplicity of vector illustration into 3D. Drawing circles and squares is easy and fun. Zdog just adds another dimension.

Install

Download

CDN

Link directly to Zdog JS on unpkg.

< script src = "https://unpkg.com/zdog@1/dist/zdog.dist.min.js" > </ script >

Package managers

Install with npm: npm install zdog

Install with Bower: bower install zdog --save

Hello world demo

Create 3D models with Zdog by adding shapes. See Getting started for a walk-through of this demo.

let isSpinning = true ; let illo = new Zdog.Illustration ({ element : '.zdog-canvas' , dragRotate : true , onDragStart: function ( ) { isSpinning = false ; }, }); new Zdog.Ellipse ({ addTo : illo , diameter : 80 , translate : { z : 40 }, stroke : 20 , color : '#636' , }); new Zdog.Rect ({ addTo : illo , width : 80 , height : 80 , translate : { z : -40 }, stroke : 12 , color : '#E62' , fill : true , }); function animate ( ) { illo .rotate.y += isSpinning ? 0.03 : 0 ; illo .updateRenderGraph(); requestAnimationFrame( animate ); } animate(); Edit this demo on CodePen

About Zdog

Hi! Dave here. I wanted to make a video game. I needed a 3D engine, but most engines were too powerful and complex for me. I made Zdog so I could design and display simple 3D models without a lot of overhead.

Zdog is directly inspired by Dogz, a virtual pet game by P.F. Magic released in 1995. It used flat 2D circle sprites to render the Dogz’ models, but in a 3D scene. See Dogz playthrough video here. Dogz were fully animated in real time, running, flopping, scratching (on Windows 3.1!). It was remarkable.

Zdog uses the same principal. It renders all shapes using 2D drawing API in <canvas> or <svg> . Spheres are actually dots. Toruses are actually circles . Capsules are actually thick lines. It’s a simple, but effective trick. The underlying 3D math comes from Rotating 3D Shapes by Peter Collingridge.

Zdog is pronounced “Zee-dog” in American parlance or “Zed-dog” in British.

Zdog v1 is a beta-release, of sorts. This is my first time creating a 3D engine, so I probably got some stuff wrong. Expect lots of changes for v2. Provide input and select new features on the Zdog issue tracker on GitHub.