# svg3d
**Repository Path**: xuchengzhi/svg3d
## Basic Information
- **Project Name**: svg3d
- **Description**: https://github.com/prideout/svg3d
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2021-02-26
- **Last Updated**: 2021-12-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
This is a single-file Python library for generating 3D wireframes in SVG format.
For a description of how the library was designed and implemented, check out
[this blog post](https://prideout.net/blog/svg_wireframes/#using-the-api).
## Usage example
```python
import numpy, svg3d, pyrr, math
def get_octahedron_faces():
f = math.sqrt(2.0) / 2.0
verts = numpy.float32([ ( 0, -1, 0), (-f, 0, f), ( f, 0, f), ( f, 0, -f), (-f, 0, -f), ( 0, 1, 0) ])
triangles = numpy.int32([ (0, 2, 1), (0, 3, 2), (0, 4, 3), (0, 1, 4), (5, 1, 2), (5, 2, 3), (5, 3, 4), (5, 4, 1) ])
return 15.0 * verts[triangles]
def generate_svg(filename):
view = pyrr.matrix44.create_look_at(eye=[50, 40, 120], target=[0, 0, 0], up=[0, 1, 0])
projection = pyrr.matrix44.create_perspective_projection(fovy=15, aspect=1, near=10, far=200)
camera = svg3d.Camera(view, projection)
style = dict(
fill="white", fill_opacity="0.75",
stroke="black", stroke_linejoin="round", stroke_width="0.005")
mesh = svg3d.Mesh(get_octahedron_faces(), style=style)
view = svg3d.View(camera, svg3d.Scene([mesh]))
svg3d.Engine([view]).render(filename)
generate_svg("octahedron.svg")
```
The above code snippet generates an image like this:
## Running the test script
```
pipenv shell
pipenv install
cd extras
./test.py && open gallery.html
```