Summerize Chapter 13: Instancing & Procedural Generation
This commit is contained in:
parent
8ce020f800
commit
45057b6fb7
|
|
@ -0,0 +1,40 @@
|
||||||
|
# Chapter 13: Instancing & Procedural Generation
|
||||||
|
|
||||||
|
As I read this book, I summarize what I think is wrong. If you think my comments are wrong then please let me know. We can dicuss more and update your opinion.
|
||||||
|
|
||||||
|
## Morphing
|
||||||
|
|
||||||
|
Morphing which is explaned by this book isn't the cannonical way of morphing. Morphing is usually a morphable mesh where primitives’ attributes are obtained by adding the original attributes to a weighted sum of targets attributes.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
For instance, the the position of vertices for the primitive at index i are computed in this way:
|
||||||
|
|
||||||
|
```
|
||||||
|
primitives[i].attributes.POSITION +
|
||||||
|
weights[0] * primitives[i].targets[0].POSITION +
|
||||||
|
weights[1] * primitives[i].targets[1].POSITION +
|
||||||
|
weights[2] * primitives[i].targets[2].POSITION + ...
|
||||||
|
```
|
||||||
|
|
||||||
|
Apple's animoji is the most famous example of morphing.
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
## Miscalculation of the world position
|
||||||
|
|
||||||
|
In Nature.metal and Houses.metal, the world position is calculated incorrectly, replace:
|
||||||
|
|
||||||
|
```
|
||||||
|
out.worldPosition = (uniforms.modelMatrix * vertexIn.position
|
||||||
|
* instance.modelMatrix).xyz;
|
||||||
|
```
|
||||||
|
|
||||||
|
With:
|
||||||
|
|
||||||
|
```
|
||||||
|
out.worldPosition = (uniforms.modelMatrix * instance.modelMatrix
|
||||||
|
* vertexIn.position).xyz;
|
||||||
|
```
|
||||||
|
|
||||||
|
The result isn't changed because the world position is not used anywhere.
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 2.5 MiB |
Binary file not shown.
|
After Width: | Height: | Size: 294 KiB |
|
|
@ -27,6 +27,7 @@ You can see color images in this book at [here](https://www.raywenderlich.com/bo
|
||||||
* [Chapter 10: Fragment Post-Processing](https://github.com/daemyung/metal-by-tutorials/tree/main/10-trees-and-fog)
|
* [Chapter 10: Fragment Post-Processing](https://github.com/daemyung/metal-by-tutorials/tree/main/10-trees-and-fog)
|
||||||
* [Chapter 11: Tessellation & Terrains](https://github.com/daemyung/metal-by-tutorials/tree/main/11-tesselation-and-terrains)
|
* [Chapter 11: Tessellation & Terrains](https://github.com/daemyung/metal-by-tutorials/tree/main/11-tesselation-and-terrains)
|
||||||
* [Chapter 12: Environment](https://github.com/daemyung/metal-by-tutorials/tree/main/12-environment)
|
* [Chapter 12: Environment](https://github.com/daemyung/metal-by-tutorials/tree/main/12-environment)
|
||||||
|
* [Chapter 13: Instancing & Procedural Generation](https://github.com/daemyung/metal-by-tutorials/tree/main/13-procedural-generation)
|
||||||
|
|
||||||
## Copyright
|
## Copyright
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue