demo voxelcad
play

Demo: VoxelCAD Csongor Kiss, Toby Shaw What is VoxelCAD? - PowerPoint PPT Presentation

Demo: VoxelCAD Csongor Kiss, Toby Shaw What is VoxelCAD? Collaborative voxel-based CAD tool In the browser Programmable with a functional DSL Written in Elm + Haskell (+ TypeScript) Work in progress Some context


  1. Demo: VoxelCAD Csongor Kiss, Toby Shaw

  2. What is VoxelCAD? • Collaborative voxel-based CAD tool • In the browser • Programmable with a functional DSL • Written in Elm + Haskell (+ TypeScript) • Work in progress

  3. 
 Some context • People use Minecraft as an artistic canvas • These tend to get very big 
 There are some tools, but they are not very intuitive: 
 - clunky 
 - slow 
 - no immediate feedback

  4. Some context • People use Minecraft as an artistic canvas • These tend to get very big • There are some tools, but they are not very intuitive: 
 - clunky 
 - slow 
 - no immediate feedback

  5. Functional DSL • Pure - no global state, idempotent scripts • Nicely composes • Easy to understand, even without programming knowledge • “We’ll write a parser later” => lisp

  6. DEMO

  7. Constructive Solid Geometry type Primitive = Cylinder | Sphere | Cube | Cone

  8. Combine primitive solids with boolean operations type Op = Union | Intersect | Subtract

  9. type Construction = Leaf Transform Primitive | Combine Transform Op Construction Construction type Transform = …

  10. Voxelisation

  11. Hardware-accelerated voxelisation

  12. A LONGER DEMO

  13. Thoughts on Elm • New programming language for web applications • Similar to Haskell • But there are some inconvenient differences • Predictable run-time system

  14. data Transformation = Scale Vec3 Vec3 | Rotate Float Vec3 Vec3 | Translate Vec3 deriving (Generic, FromJSON, ToJSON)

  15. data Transformation = Scale Vec3 Vec3 | Rotate Float Vec3 Vec3 | Translate Vec3 deriving (Generic, FromJSON, ToJSON, Elm)

  16. Future work • More usable editor (auto-completion, syntax highlighting…) • A typed DSL • More “mouse-support” (for curve control points, for example) • Could be used for teaching programming: your program builds things in Minecraft!

  17. Thank you

Recommend


More recommend