Lowpoly 3D model viewer for the terminal made in javascript
npm install term3d
npm i -g term3d
`
Also available in the AUR
`
yay -S term3d
`How does it work?
The renderer doesn't use the traditional perspective projection
instead, it uses another projection method called weak perspective projection,
which is not common at all because its very limiting, but for a simple model viewer without a moving camera it's good enough,
plus it's very simple to implement here is the algorthim for it:
`
point2d.x = (point3d.x * fov) / point3d.z + (screenWidth/2)
point2d.y = (point3d.y * fov) / point3d.z + (screenHeight/2)
`Useage :
`
term3d [Options]
Supported file formats: .obj | .stlOptions:
--view -v The View type either "fill" or "wire" of "points"
--fov=100 -f The fov of the camera
--far=100 The far plane of rendering
--scale -s=50 Model scale, if there is no model displaing lower it
--y-speed -y=0.05 Sets the speed of rotation around the y axis
--point-char=. The character of point rendering
--wire-char=: The character of wire rendering
--color -c black, gray, white, red, blue, yellow, green, magenta, cyan, brightBlack, brightWhite, brightRed, brightBlue, brightYellow, brightGreen, brightMagenta, brightCyan
Controls:
Arrow keys : move the camera
z-x : move the camera closer and fearther
1-2-3 : change the drawing mode
w-s : rotate along the x axis
a-d : rotate along the z axis
e : toggle y rotation
``- [ ] Fix weird line rendering
- [ ] add custom ascii gradient based on user input
- [ ] support multiple file formats (.gltf/.glb, .fbx)
- [X] Add to the AUR