Render Wavefront OBJ files as SVG images.
(ql:quickload :obj-to-svg)
(use-package :3d-vectors)
(use-package :3d-matrices)
(defparameter *sknot* (obj-reader:read-obj-from-file (asdf:system-relative-pathname :obj-to-svg "examples/simple-knot.obj")))
(let ((svg:*default-alpha* 0.9)
(svg:*default-stroke-width* 0.0005))
(handler-bind ((file-exists (lambda (c)
(declare (ignorable c))
(invoke-restart 'supersede))))
(obj-to-svg:obj-to-svg *sknot*
:svg-file (asdf:system-relative-pathname :obj-to-svg "examples/simple-knot.svg")
:open-file :emacs
:scale-factor 0.25
:svg-width 600 :svg-height 600
:show-edges t
:sort-predicate #'>
:edge-color (vec4 0.6 0.9 0.3 0.9)
:bg-(vec4 0.3 0.3 0.3 1.0)
:shade t
:perspective t
:field-of-view 55
:eye-position (vec3 20 -26 -20)
:up-vector (vec3 0 1 0)
:point-lights (list (make-instance 'obj-to-svg:point-light :color (vec3 100 100 100) :location (vec3 5 10 15))
(make-instance 'obj-to-svg:point-light :color (vec3 280 280 100) :location (vec3 -15 10 -15)))
:open-file nil
:show-centers nil)))
ISC
Copyright (c) 2025 Jeremiah LaRocco <jeremiah_larocco@fastmail.com>