All Projects → 1j01 → Pipes

1j01 / Pipes

Licence: mit
💿 Classic 3D Pipes screensaver remake (web-based)

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Pipes

Threejs Sandbox
Set of experiments and extensions to THREE.js.
Stars: ✭ 163 (-7.39%)
Mutual labels:  threejs, three-js
Patches
Patches is a visual programming editor for building WebVR and WebGL experiences.
Stars: ✭ 164 (-6.82%)
Mutual labels:  threejs, three-js
Vue Gl
Vue.js components rendering 3D WebGL graphics reactively with three.js
Stars: ✭ 434 (+146.59%)
Mutual labels:  threejs, three-js
Glas
WebGL in WebAssembly with AssemblyScript
Stars: ✭ 278 (+57.95%)
Mutual labels:  threejs, three-js
Vanta
Animated 3D backgrounds for your website
Stars: ✭ 1,162 (+560.23%)
Mutual labels:  threejs, three-js
Three Mesh Bvh
A BVH implementation to speed up raycasting against three.js meshes.
Stars: ✭ 302 (+71.59%)
Mutual labels:  threejs, three-js
Trois
✨ ThreeJS + VueJS 3 + ViteJS ⚡
Stars: ✭ 648 (+268.18%)
Mutual labels:  threejs, three-js
three-kt-wrapper
Kotlin wrappers for Three.js
Stars: ✭ 46 (-73.86%)
Mutual labels:  threejs, three-js
Solarsys
Realistic Solar System simulation with three.js
Stars: ✭ 49 (-72.16%)
Mutual labels:  threejs, three-js
Three.js Pathtracing Renderer
Real-time PathTracing with global illumination and progressive rendering, all on top of the Three.js WebGL framework. Click here for Live Demo: https://erichlof.github.io/THREE.js-PathTracing-Renderer/Geometry_Showcase.html
Stars: ✭ 872 (+395.45%)
Mutual labels:  threejs, three-js
Livecodelab
a web based livecoding environment
Stars: ✭ 276 (+56.82%)
Mutual labels:  threejs, three-js
Three Csgmesh
Conversion of a CSG library for use with modern THREE.js
Stars: ✭ 101 (-42.61%)
Mutual labels:  threejs, three-js
FairyGUI-threejs
A GUI Editor & framework for Three.js
Stars: ✭ 115 (-34.66%)
Mutual labels:  threejs, three-js
Hedron
Perform live shows with your three.js creations
Stars: ✭ 372 (+111.36%)
Mutual labels:  threejs, three-js
TweetMigration
A WebGL heatmap of global Twitter activity
Stars: ✭ 42 (-76.14%)
Mutual labels:  threejs, three-js
Roygbiv
A 3D engine for the Web
Stars: ✭ 499 (+183.52%)
Mutual labels:  threejs, three-js
WebGL-Billiards
ThreeJS based 8-ball pool
Stars: ✭ 28 (-84.09%)
Mutual labels:  threejs, three-js
three-musketeers
A simple module to introspect, debug and test any THREE.js application.
Stars: ✭ 30 (-82.95%)
Mutual labels:  threejs, three-js
Wave Simulator
A graphical 3D simulation of the wave and heat equations
Stars: ✭ 5 (-97.16%)
Mutual labels:  threejs, three-js
A Mmd
A-Frame MMD component
Stars: ✭ 74 (-57.95%)
Mutual labels:  threejs, three-js

Pipes

A web-based remake of the Windows 3D Pipes screensaver (3D Pipes.scr or sspipes.scr) using Three.js

Includes both Utah Teapots and candy cane easter eggs! (with increased chances 😏)

Check it out!

(This screen capture GIF is outdated. It now operates on a global grid, and avoids collisions.)

TODO

  • Add back smooth fade out as an option, now that a dissolve effect is implemented

  • Add control for speed

  • Animate sections into existence, emulating CPU graphics where the triangles were drawn progressively and the screen updated in between "frames" (optionally)

  • Improve lighting (the original was less shiny), or at least avoid unflattering camera angles

  • Use a palette (what palette? please help with this)

  • Extra camera functions like continuous rotation, maybe even following the pipes like a rollercoaster

  • Allow moving camera during dissolve transition (it's kinda unpleasant how it stops you (abruptly), and the effect is implemented as an overlay anyways)

  • Save options to local storage, or maybe in the URL

  • Custom textures with drag and drop (and also a file input) (can accept multiple textures, for it to choose from randomly (pulling from a bag and not replacing them))

  • Proper elbow joints (currently uses a sphere (smaller than the ball joint so it doesn't stick out) rather than a section of a torus); could use spline extrusion rather than trying to align a torus section every which way (if it actually helps)

  • Implement different behavioral characteristics between pipes

  • Follow-the-leader mode

  • Update README GIF

  • An API maybe?

See Also

Mine / Affiliated
Unaffiliated

License

MIT-licensed; see LICENSE for details

Development

Live Server

You just need an HTTP server, but Live Server is a great option, automatically reloading when you make changes.

Prettier

Prettier is used for code formatting.

To set up, including a pre-commit hook:

  • Install Node.js if you don't already have it
  • Run npm i in the project directory

A pre-commit hook can be surprising tho; formatting on save might be better...

Reference Material

The source code for the original OpenGL screensavers can be found in a version of the Windows SDK (for Windows NT 4.0), in MSTOOLS\SAMPLES\OPENGL\SCRSAVE

(If you have a later version of the code, please let me know.)

Project Structure

All the good stuff is in screensaver.js

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].