|
1 | | -# [Chisel](https://github.com/RadicalCSG/com.chisel/wiki) (WIP) |
2 | | - |
3 | | -Chisel is an extension for **Unity** that allows for _rapid_, iterative, **non destructive** level editing! |
4 | | - |
5 | | - |
6 | | - |
7 | | ---- |
8 | | -* You can find [installation instructions here](INSTALLATION.md) |
9 | | -* [Click here for information on how to get started](GETTING_STARTED.md) |
10 | | -* Every feature is explained on [the wiki](https://github.com/RadicalCSG/com.chisel/wiki) |
11 | | -* Want to help out? Read [how to contribute](CONTRIBUTING.md), and see [what is planned](https://github.com/orgs/RadicalCSG/projects/1) |
12 | | -*  If you have questions be sure to ask in the discord! **[Click here to join the official Discord server!](https://discord.gg/zttNkPQ)** |
13 | | - |
14 | | ---- |
15 | | - |
16 | | -Note: |
17 | | -- Chisel *requires Unity 6.6 or newer*, and the *Universal Render Pipeline (URP)* |
18 | | -- UX is *still under development* |
19 | | -- Feature set is *still under development* |
20 | | -- It is *not yet* ready for production, but please feel free to try it out, or better yet, help out! |
21 | | - |
22 | | ---- |
23 | | - |
24 | | -## Features (incomplete) |
25 | | - |
26 | | -Building geometry |
27 | | -* [Constructive Solid Geometry](https://github.com/RadicalCSG/com.chisel/wiki/Real-time-CSG) that generates geometry in real-time, exactly, without cracks where shapes meet |
28 | | -* [Add, remove and intersect geometry](https://github.com/RadicalCSG/com.chisel/wiki/Operations) to your level using CSG, for fluid, interactive, non destructive workflows |
29 | | -* Higher level ["generators"](https://github.com/RadicalCSG/com.chisel/wiki/Generators) that create more complicated geometry to perform CSG with, while retaining context of what it is you're creating (if you create stairs, these will remain stairs that you can edit and tweak) |
30 | | -* [Hierarchical Constructive Solid Geometry](https://github.com/RadicalCSG/com.chisel/wiki/Hierarchical-CSG): generators and brushes grouped in a composite act as one whole, to perform CSG on other objects with |
31 | | -* [Subtractive Workflow](https://github.com/RadicalCSG/com.chisel/wiki/Subtractive-Workflow) |
32 | | -* Works well with [prefabs](https://github.com/RadicalCSG/com.chisel/wiki/Prefabs): drag and drop windows onto walls including their holes |
33 | | -* [Draw 2D shapes](https://github.com/RadicalCSG/com.chisel/wiki/Drawing-2D-Shapes) (possible to turn straight lines into curves) on existing CSG surfaces and extrude them |
34 | | -* [Brush contents](https://github.com/RadicalCSG/com.chisel/wiki/Brush-Contents): solid, glass, water; faces stay where different contents meet |
35 | | - |
36 | | -Precision |
37 | | -* [Snapping](https://github.com/RadicalCSG/com.chisel/wiki/Snapping) to grid lines, of the pivot or bounds of what you move |
38 | | -* [Rotatable & movable grid](https://github.com/RadicalCSG/com.chisel/wiki/Grid) |
39 | | - |
40 | | -Surfaces and texturing |
41 | | -* [Normal smoothing](https://github.com/RadicalCSG/com.chisel/wiki/Normal-Smoothing) |
42 | | -* [Double sided surfaces](https://github.com/RadicalCSG/com.chisel/wiki/Double-Sided-Surfaces): a material can make its surfaces drawn from behind too |
43 | | -* [Hotspot mapping](https://github.com/RadicalCSG/com.chisel/wiki/Hotspot-Mapping): surfaces take their texture coordinates from the best matching tile of a layout (borders, repeats, shaped tiles and trim sheets), with a layout editor |
44 | | -* [Decals](https://github.com/RadicalCSG/com.chisel/wiki/Decals): boxes that project a material onto the surfaces they reach, drawn over them or replacing them, their image repeated in x and y, from the whole texture or an image in a trim sheet |
45 | | -* [Trim decals](https://github.com/RadicalCSG/com.chisel/wiki/Trim-Decals): a decal on the edge between two surfaces, the lower half of its image on one and the upper half on the other (or mirrored), stretched, repeated or fitted along the edge or one image placed on it, running round corners, its image from the whole texture or a trim sheet, following the edge when either brush changes; placed by picking an edge in the scene view, or on every edge where two materials meet |
46 | | - |
47 | | -Output |
48 | | -* Ordinary Unity meshes and colliders, that work with Unity's lightmapping, occlusion culling and navigation meshes |
49 | | -* [Chunking](https://github.com/RadicalCSG/com.chisel/wiki/Chunking): a model's output is split into a mesh per material, and divided into chunks of space, for better occlusion and culling handling |
50 | | -* [Debug visualizations](https://github.com/RadicalCSG/com.chisel/wiki/Debug-Visualizations) of user-hidden, shadow-only, shadow-casting, shadow-receiving, collider and discarded (removed by the CSG) surfaces |
51 | | - |
52 | | -## Planned Features (incomplete, and in random order) |
53 | | - |
54 | | -See [the project](https://github.com/orgs/RadicalCSG/projects/1) for everything that is planned. |
55 | | -* Decals, still to do: |
56 | | - * [Omni directional decals](https://github.com/RadicalCSG/com.chisel/issues/33) |
57 | | - * [Skewed decals](https://github.com/RadicalCSG/com.chisel/issues/34) |
58 | | - * [Fade distances](https://github.com/RadicalCSG/com.chisel/issues/35) |
59 | | -* [Snapping to vertices, edges and surfaces of other geometry](https://github.com/RadicalCSG/com.chisel/issues/42) |
60 | | -* [Brushes that stay visible and editable while their shape is invalid](https://github.com/RadicalCSG/com.chisel/issues/12) |
61 | | -* [Vertex Painting](https://github.com/RadicalCSG/com.chisel/issues/36) |
62 | | -* [Extrusion from existing surface](https://github.com/RadicalCSG/com.chisel/issues/37) |
63 | | -* [2D shape editor](https://github.com/RadicalCSG/com.chisel/issues/38) |
64 | | -* [Grid Objects](https://github.com/RadicalCSG/com.chisel/issues/39) |
65 | | -* [Clip Tool](https://github.com/RadicalCSG/com.chisel/issues/40) |
66 | | -* [Node Based Generators](https://github.com/RadicalCSG/com.chisel/issues/41) for easy procedural content generation |
| 1 | +<p align="center"> |
| 2 | + <img src="Documentation~/Images/chisel_banner.png" alt="Chisel — real-time CSG level editor for Unity" width="100%"> |
| 3 | +</p> |
| 4 | + |
| 5 | +<p align="center"> |
| 6 | + <a href="https://unity.com/releases/editor"><img src="https://img.shields.io/badge/unity-6.6%2B-222c37?logo=unity" alt="Unity 6.6+"></a> |
| 7 | + <img src="https://img.shields.io/badge/pipeline-URP-222c37" alt="Universal Render Pipeline"> |
| 8 | + <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-007ec6" alt="MIT license"></a> |
| 9 | + <img src="https://img.shields.io/badge/status-work%20in%20progress-c4520a" alt="Status: work in progress"> |
| 10 | + <a href="https://github.com/RadicalCSG/com.chisel/stargazers"><img src="https://img.shields.io/github/stars/RadicalCSG/com.chisel" alt="GitHub stars"></a> |
| 11 | + <a href="https://discord.gg/zttNkPQ"><img src="https://img.shields.io/badge/discord-join%20chat-5865f2?logo=discord&logoColor=white" alt="Join the Discord"></a> |
| 12 | +</p> |
| 13 | + |
| 14 | +<p align="center"> |
| 15 | + <a href="INSTALLATION.md">Installation</a> · |
| 16 | + <a href="GETTING_STARTED.md">Getting started</a> · |
| 17 | + <a href="https://github.com/RadicalCSG/com.chisel/wiki">Wiki</a> · |
| 18 | + <a href="#roadmap">Roadmap</a> · |
| 19 | + <a href="#extensions">Extensions</a> · |
| 20 | + <a href="http://www.youtube.com/watch?v=Iqmg4gblreo">GDC talk</a> · |
| 21 | + <a href="https://discord.gg/zttNkPQ">Discord</a> |
| 22 | +</p> |
| 23 | + |
| 24 | +<p align="center"> |
| 25 | + <img src="Documentation~/Images/chisel_warning.png" alt="Warning: Chisel is a work in progress and not yet ready for production. The UX and the CSG algorithm are still under development." width="100%"> |
| 26 | +</p> |
| 27 | + |
| 28 | + |
| 29 | + |
| 30 | +## About |
| 31 | + |
| 32 | +Chisel is a Unity extension for rapid, iterative, **non-destructive** level editing. Block out a level with brushes, carve it with subtractive shapes, refine it with generators and texture it with hotspots and decals — every operation stays live, so nothing is baked until you want it to be. |
| 33 | + |
| 34 | +Every feature is documented in the [wiki](https://github.com/RadicalCSG/com.chisel/wiki). |
| 35 | + |
| 36 | +## Features |
| 37 | + |
| 38 | +### Surfaces & texturing |
| 39 | + |
| 40 | +<table> |
| 41 | + <tr> |
| 42 | + <td width="33%"><b><a href="https://github.com/RadicalCSG/com.chisel/wiki/Hotspot-Mapping">Hotspot mapping</a></b><br>UVs come from the best-matching tile of a layout. Layout editor included.</td> |
| 43 | + <td width="33%"><b><a href="https://github.com/RadicalCSG/com.chisel/wiki/Decals">Decals</a></b><br>Project a material over or in place of surfaces. Omni-directional, skewed, with fade distances.</td> |
| 44 | + <td width="33%"><b><a href="https://github.com/RadicalCSG/com.chisel/wiki/Trim-Decals">Trim decals</a></b><br>Decals that wrap the edge between two surfaces and follow it as brushes change.</td> |
| 45 | + </tr> |
| 46 | + <tr> |
| 47 | + <td><b>Vertex painting</b><br>Paint directly onto CSG surfaces.</td> |
| 48 | + <td><b><a href="https://github.com/RadicalCSG/com.chisel/wiki/Double-Sided-Surfaces">Double-sided surfaces</a></b><br>A material can draw its surfaces from behind too.</td> |
| 49 | + <td><b><a href="https://github.com/RadicalCSG/com.chisel/wiki/Normal-Smoothing">Normal smoothing</a></b><br>Smooth shading across CSG surfaces.</td> |
| 50 | + </tr> |
| 51 | +</table> |
| 52 | + |
| 53 | +### Building geometry |
| 54 | + |
| 55 | +<table> |
| 56 | + <tr> |
| 57 | + <td width="33%"><b><a href="https://github.com/RadicalCSG/com.chisel/wiki/Real-time-CSG">Real-time CSG</a></b><br>Exact geometry, generated in real time, without cracks where shapes meet.</td> |
| 58 | + <td width="33%"><b><a href="https://github.com/RadicalCSG/com.chisel/wiki/Operations">Add, remove, intersect</a></b><br>Fluid, interactive, non-destructive CSG operations.</td> |
| 59 | + <td width="33%"><b><a href="https://github.com/RadicalCSG/com.chisel/wiki/Generators">Generators</a></b><br>Higher-level shapes keep their context: stairs stay editable as stairs.</td> |
| 60 | + </tr> |
| 61 | + <tr> |
| 62 | + <td><b><a href="https://github.com/RadicalCSG/com.chisel/wiki/Hierarchical-CSG">Hierarchical CSG</a></b><br>Grouped brushes and generators act as one whole.</td> |
| 63 | + <td><b><a href="https://github.com/RadicalCSG/com.chisel/wiki/Brush-Contents">Brush contents</a></b><br>Solid, glass or water. Faces stay where different contents meet.</td> |
| 64 | + <td><b><a href="https://github.com/RadicalCSG/com.chisel/wiki/Subtractive-Workflow">Subtractive workflow</a></b><br>Start from solid space and carve rooms out of it.</td> |
| 65 | + </tr> |
| 66 | +</table> |
| 67 | + |
| 68 | +### Editing |
| 69 | + |
| 70 | +<table> |
| 71 | + <tr> |
| 72 | + <td width="33%"><b><a href="https://github.com/RadicalCSG/com.chisel/wiki/Prefabs">Prefabs</a></b><br>Drop a window onto a wall and its hole comes with it.</td> |
| 73 | + <td width="33%"><b><a href="https://github.com/RadicalCSG/com.chisel/wiki/Drawing-2D-Shapes">2D shapes</a></b><br>Draw on CSG surfaces, bend lines into curves, extrude.</td> |
| 74 | + <td width="33%"><b>Forgiving brushes</b><br>Brushes stay visible and editable while their shape is invalid.</td> |
| 75 | + </tr> |
| 76 | + <tr> |
| 77 | + <td><b><a href="https://github.com/RadicalCSG/com.chisel/wiki/Snapping">Snapping</a></b><br>Snap the pivot or bounds of what you move to grid lines.</td> |
| 78 | + <td><b><a href="https://github.com/RadicalCSG/com.chisel/wiki/Grid">Rotatable grid</a></b><br>Move and rotate the grid to work at any angle.</td> |
| 79 | + <td><b><a href="https://github.com/RadicalCSG/com.chisel/wiki/Debug-Visualizations">Debug visualizations</a></b><br>See hidden, shadow-only, collider and CSG-discarded surfaces.</td> |
| 80 | + </tr> |
| 81 | +</table> |
| 82 | + |
| 83 | +### Output |
| 84 | + |
| 85 | +Ordinary Unity meshes and colliders that work with lightmapping, occlusion culling and navigation meshes — split into a mesh per material and into [spatial chunks](https://github.com/RadicalCSG/com.chisel/wiki/Chunking). |
| 86 | + |
| 87 | +## Getting started |
| 88 | + |
| 89 | +Requires **Unity 6.6** or newer and the **Universal Render Pipeline** (URP). |
| 90 | + |
| 91 | +1. Open <kbd>Window › Package Manager</kbd> |
| 92 | +2. Click <kbd>+</kbd> and choose *Install package from git URL…* |
| 93 | +3. Paste the URL below and press Enter. |
| 94 | + |
| 95 | +``` |
| 96 | +https://github.com/RadicalCSG/com.chisel.git |
| 97 | +``` |
| 98 | + |
| 99 | +The first start-up takes a while: Burst compiles a lot of code. This only happens once. |
| 100 | + |
| 101 | +[Read the getting started guide →](GETTING_STARTED.md) |
| 102 | + |
| 103 | +## Roadmap |
| 104 | + |
| 105 | +Planned, in no particular order. Discussion lives in the linked issues. |
| 106 | + |
| 107 | +- [ ] Snapping to vertices, edges and surfaces of other geometry — [#42](https://github.com/RadicalCSG/com.chisel/issues/42) |
| 108 | +- [ ] Extrusion from existing surfaces — [#37](https://github.com/RadicalCSG/com.chisel/issues/37) |
| 109 | +- [ ] 2D shape editor — [#38](https://github.com/RadicalCSG/com.chisel/issues/38) |
| 110 | +- [ ] Grid objects — [#39](https://github.com/RadicalCSG/com.chisel/issues/39) |
| 111 | +- [ ] Clip tool — [#40](https://github.com/RadicalCSG/com.chisel/issues/40) |
| 112 | +- [ ] Node-based generators for procedural content — [#41](https://github.com/RadicalCSG/com.chisel/issues/41) |
67 | 113 |
|
68 | 114 | ## Extensions |
69 | | -* [Source Engine 2006 Map Importer for Chisel Editor](https://github.com/Henry00IS/Chisel.Import.Source) |
70 | | - * [Decals on models that aren't Chisel geometry, for the importer](https://github.com/Henry00IS/Chisel.Decals) |
71 | | - * [VPK import support for importer](https://github.com/nukeandbeans/com.chisel.import.source.vpktools) |
72 | | -* [Quake1 Importer](https://github.com/Quixotic7/Chisel.Import.Quake1) |
73 | 115 |
|
74 | | -## Reporting problems |
| 116 | +| Extension | Repository | |
| 117 | +|---|---| |
| 118 | +| Source Engine 2006 map importer | [Henry00IS/Chisel.Import.Source](https://github.com/Henry00IS/Chisel.Import.Source) | |
| 119 | +| ↳ Decals on models that aren't Chisel geometry | [Henry00IS/Chisel.Decals](https://github.com/Henry00IS/Chisel.Decals) | |
| 120 | +| ↳ VPK import support for the importer | [nukeandbeans/com.chisel.import.source.vpktools](https://github.com/nukeandbeans/com.chisel.import.source.vpktools) | |
| 121 | +| Quake 1 importer | [Quixotic7/Chisel.Import.Quake1](https://github.com/Quixotic7/Chisel.Import.Quake1) | |
75 | 122 |
|
76 | | -If you find any failure cases, please [open an issue](https://github.com/RadicalCSG/com.chisel/issues/new/choose), and if possible provide us with a reproducible scene so we can more easily fix it! |
| 123 | +## How it works |
77 | 124 |
|
78 | | -## License |
| 125 | +The core algorithm is explained in the GDC 2020 talk *Geometry in Milliseconds: Real-Time Constructive Solid Geometry*. |
| 126 | + |
| 127 | +[](http://www.youtube.com/watch?v=Iqmg4gblreo) |
| 128 | + |
| 129 | +## Community |
79 | 130 |
|
80 | | -Chisel is available under the [MIT license](LICENSE). |
| 131 | +- Questions, showcases and dev chat: [join the Discord server](https://discord.gg/zttNkPQ) |
| 132 | +- Want to contribute? Start with a [good first issue](https://github.com/RadicalCSG/Chisel/labels/good%20first%20issue) |
81 | 133 |
|
82 | | ---- |
83 | | -The core technology is based on the algorithm explained in [this GDC 2020 talk](http://www.youtube.com/watch?v=Iqmg4gblreo) |
| 134 | +## Reporting problems |
| 135 | + |
| 136 | +Found a case where Chisel fails? [Open an issue](https://github.com/RadicalCSG/com.chisel/issues/new/choose) — a scene that reproduces it helps a lot. |
| 137 | + |
| 138 | +## License |
84 | 139 |
|
85 | | -[](http://www.youtube.com/watch?v=Iqmg4gblreo "Geometry in Milliseconds: Real-Time Constructive Solid Geometry") |
| 140 | +Chisel is released under the [MIT license](LICENSE). |
0 commit comments