diff --git a/docs/blender/index.html b/docs/blender/index.html index a2f1e00..8883886 100644 --- a/docs/blender/index.html +++ b/docs/blender/index.html @@ -5,7 +5,7 @@ - + Blender creations @@ -15,10 +15,9 @@ @@ -29,31 +28,32 @@

Alien Creatures animation

January 2022

youtu.be/AfRJvExamX4

- + +

Alien Tree

January 2022

- Alien Tree + Alien Tree

Decapod Alien

January 2022

- Decapod Alien + Decapod Alien

Crab

October 2021

- Crab + Crab

Shork Wallpaper

This is a wallpaper for the game Shork.

May 2021

- Shork Wallpaper + Shork Wallpaper diff --git a/docs/fractals/index.html b/docs/fractals/index.html index 78805d2..2f41d80 100644 --- a/docs/fractals/index.html +++ b/docs/fractals/index.html @@ -5,7 +5,7 @@ - + Fractals @@ -15,10 +15,9 @@ @@ -70,9 +69,9 @@ diff --git a/docs/index.html b/docs/index.html index a8e45d5..a365be8 100644 --- a/docs/index.html +++ b/docs/index.html @@ -5,7 +5,7 @@ - + crispypin.cc @@ -15,10 +15,9 @@ @@ -29,9 +28,9 @@ diff --git a/docs/blender/media/alien_tree.png b/docs/media/blender/alien_tree.png similarity index 100% rename from docs/blender/media/alien_tree.png rename to docs/media/blender/alien_tree.png diff --git a/docs/blender/media/alien_tree_preview.png b/docs/media/blender/alien_tree_preview.png similarity index 100% rename from docs/blender/media/alien_tree_preview.png rename to docs/media/blender/alien_tree_preview.png diff --git a/docs/blender/media/crab.png b/docs/media/blender/crab.png similarity index 100% rename from docs/blender/media/crab.png rename to docs/media/blender/crab.png diff --git a/docs/blender/media/crab_preview.png b/docs/media/blender/crab_preview.png similarity index 100% rename from docs/blender/media/crab_preview.png rename to docs/media/blender/crab_preview.png diff --git a/docs/media/blender/critters.mp4 b/docs/media/blender/critters.mp4 new file mode 100644 index 0000000..ede53aa Binary files /dev/null and b/docs/media/blender/critters.mp4 differ diff --git a/docs/blender/media/decapod_shock.png b/docs/media/blender/decapod_shock.png similarity index 100% rename from docs/blender/media/decapod_shock.png rename to docs/media/blender/decapod_shock.png diff --git a/docs/blender/media/decapod_shock_preview.png b/docs/media/blender/decapod_shock_preview.png similarity index 100% rename from docs/blender/media/decapod_shock_preview.png rename to docs/media/blender/decapod_shock_preview.png diff --git a/docs/blender/media/shork_wallpaper.png b/docs/media/blender/shork_wallpaper.png similarity index 100% rename from docs/blender/media/shork_wallpaper.png rename to docs/media/blender/shork_wallpaper.png diff --git a/docs/blender/media/shork_wallpaper_preview.png b/docs/media/blender/shork_wallpaper_preview.png similarity index 100% rename from docs/blender/media/shork_wallpaper_preview.png rename to docs/media/blender/shork_wallpaper_preview.png diff --git a/docs/icons/favicon.png b/docs/media/icons/favicon.png similarity index 100% rename from docs/icons/favicon.png rename to docs/media/icons/favicon.png diff --git a/docs/icons/github.png b/docs/media/icons/github.png similarity index 100% rename from docs/icons/github.png rename to docs/media/icons/github.png diff --git a/docs/icons/itch.io.svg b/docs/media/icons/itch.io.svg similarity index 100% rename from docs/icons/itch.io.svg rename to docs/media/icons/itch.io.svg diff --git a/docs/icons/youtube.png b/docs/media/icons/youtube.png similarity index 100% rename from docs/icons/youtube.png rename to docs/media/icons/youtube.png diff --git a/docs/media/projects/raymarched-voxels.png b/docs/media/projects/raymarched-voxels.png new file mode 100644 index 0000000..a558fdb Binary files /dev/null and b/docs/media/projects/raymarched-voxels.png differ diff --git a/docs/media/projects/voxel/crop.sh b/docs/media/projects/voxel/crop.sh new file mode 100755 index 0000000..17dfae8 --- /dev/null +++ b/docs/media/projects/voxel/crop.sh @@ -0,0 +1,3 @@ +#!/bin/env python3 + +find . -iname "*.png" -exec mogrify -crop '600x400+100+150' {} \; diff --git a/docs/media/projects/voxel/demo.mp4 b/docs/media/projects/voxel/demo.mp4 new file mode 100644 index 0000000..7a4721a Binary files /dev/null and b/docs/media/projects/voxel/demo.mp4 differ diff --git a/docs/media/projects/voxel/demo2.mp4 b/docs/media/projects/voxel/demo2.mp4 new file mode 100644 index 0000000..8bb15cc Binary files /dev/null and b/docs/media/projects/voxel/demo2.mp4 differ diff --git a/docs/media/projects/voxel/fig1.png b/docs/media/projects/voxel/fig1.png new file mode 100644 index 0000000..9b43ed0 Binary files /dev/null and b/docs/media/projects/voxel/fig1.png differ diff --git a/docs/media/projects/voxel/fig2.png b/docs/media/projects/voxel/fig2.png new file mode 100644 index 0000000..33e4919 Binary files /dev/null and b/docs/media/projects/voxel/fig2.png differ diff --git a/docs/media/projects/voxel/fig3.png b/docs/media/projects/voxel/fig3.png new file mode 100644 index 0000000..fcb7370 Binary files /dev/null and b/docs/media/projects/voxel/fig3.png differ diff --git a/docs/projects/index.html b/docs/projects/index.html index 0de3cd3..427ff06 100644 --- a/docs/projects/index.html +++ b/docs/projects/index.html @@ -5,7 +5,7 @@ - + Projects @@ -15,10 +15,9 @@ @@ -27,39 +26,64 @@ **This page is a draft**

Projects:

+ + + https://github.com/CrispyPin/gd-voxel-rs +

+ I am making a voxel engine in rust to learn rust and godot-rust as well as explore voxel systems. +

+ +

Demo of fast terrain generation

+ +

Greedy mesh visualisation

+

Greedy mesh algorithm

+

The algorithm I'm using is one I made myself, inspired by a few others. I could not find an easy to understand explanation of how to do it but this artice and this article gave me somewhere to start

+ +

In this explanation I will assume basic knowledge of how meshes work and how to do the simplest form of culling for voxel meshes.

+ + +

fig. 1: example set of voxels, with the simplest form of mesh generation applied.

+ +

To start off, we can break down the problem to 2 dimensions by recognising that each direction along the axis as well as each layer along those directions is independent. We then only have to process a single 2D slice of the voxel domain at once. +

+ + +

fig. 2: The algorithm only needs to consider one layer and direction at a time, highlighted in green

+ +

The first step is to generate "strips", essentially create long quads that cover connected voxels. We can loop through the plane and keep track of at most one active strip. The active strip is the last one started and we grow it as more voxels under it are traversed. In the inner loop we check the voxel at that position as well as the one above. With this we can determine if we need to stop the current strip, start a new one or do nothing. If there is not currently an active strip, a new one should be created when the voxel below is filled and the one above is empty (an exposed surface).

+ + +

fig.3: Long strips of adjacent voxels can be merged into fewer, long quads.

+ https://github.com/CrispyPin/ovr-utils

- OVR Utils is a VR overlay application that has some useful tools for SteamVR. It has been an ongoing project since may 2021. + OVR Utils is a VR overlay application that has some useful tools for SteamVR. I have been working on it on and off since May 2021.

I wanted an overlay that could tell me the time without having to open the steam dashboard, and to see the battery levels of my controllers easily, but couldn't find one for free that also had linux support. So I decided to create my own, and also wrote down a long list of other useful tools. So far only a few of these have been implemented, such as the image overlay and the keyboard.

- - - https://github.com/CrispyPin/voxel-meshing -

- I really like voxels so I decided to try making an algorithm that generates a triangle mesh for a set of voxels. It tries to minimise the number of triangles by merging quads. -

https://github.com/CrispyPin/voxel-raymarcher + https://github.com/CrispyPin/gol-wallpaper +

See live here: gol.crispypin.cc

diff --git a/docs/style.css b/docs/style.css index 682403f..2aae836 100644 --- a/docs/style.css +++ b/docs/style.css @@ -1,13 +1,13 @@ body { font-family: Arial, "Helvetica Neue", Helvetica, sans-serif; background-color: #181818; - color: #dff; + color: white; display: -ms-grid; display: grid; -ms-grid-rows: 50px auto 1fr auto; grid-template-rows: 50px auto 1fr auto; - -ms-grid-columns: 20px 1fr 20px; - grid-template-columns: 20px 1fr 20px; + -ms-grid-columns: 80px 1fr 80px; + grid-template-columns: 80px 1fr 80px; margin: 0; min-height: 100vh; } @@ -18,11 +18,11 @@ a:visited { .title-link a { text-decoration: none; - color: #dff; + color: white; } .title-link a:visited { - color: #dff; + color: white; } nav { @@ -79,7 +79,8 @@ footer p { } main { - padding: 0 20px; + padding: 0 150px 40px; + margin: 5px 100px; grid-column: 2 / -2; background-color: #282828; } @@ -122,41 +123,6 @@ main { margin: 2px; } -.controlbar .slider { - -webkit-appearance: none; - -moz-appearance: none; - outline: none; - border-radius: 0; - height: 25px; - padding: 0; - margin: 2px; - cursor: pointer; -} - -.controlbar .slider::-webkit-slider-thumb { - -webkit-appearance: none; - appearance: none; - border-radius: 1px; - width: 25px; - height: 25px; - background-color: #46c; - margin: 0; - border-radius: 0; - border: 1px solid #000; -} - -.controlbar .slider::-moz-range-thumb { - /*TODO make this look the same as on chrome*/ - -moz-appearance: none; - width: 25px; - height: 100%; - background-color: #46c; - margin: 0; - padding: 0; - border-radius: 0; - border: 1px solid #000; -} - .controlbar label { background-color: #181818; color: #fb8; @@ -164,38 +130,23 @@ main { font-family: 'Consolas', 'Courier New', Courier, monospace; } -.controlbar .play-button { - -ms-flex-preferred-size: 35%; - flex-basis: 35%; -} - -.clickable, nav li, .controlbar button, .controlbar input, .scroll-reset { - border-radius: 4px; +.clickable, nav li, .controlbar button, .controlbar input { + border-radius: 2px; background-color: #4a4; } -.clickable:hover, nav li:hover, .controlbar button:hover, .controlbar input:hover, .scroll-reset:hover { +.clickable:hover, nav li:hover, .controlbar button:hover, .controlbar input:hover { background-color: #4af; } -.clickable:active, nav li:active, .controlbar button:active, .controlbar input:active, .scroll-reset:active { +.clickable:active, nav li:active, .controlbar button:active, .controlbar input:active { background-color: #46c; } -.clickable:disabled, nav li:disabled, .controlbar button:disabled, .controlbar input:disabled, .scroll-reset:disabled { +.clickable:disabled, nav li:disabled, .controlbar button:disabled, .controlbar input:disabled { background-color: #8b8; text-decoration: line-through; color: #000; cursor: default; } - -.scroll-reset { - position: fixed; - right: 20px; - bottom: 20px; - width: 40px; - height: 40px; - background-image: url("uparrow.png"); - cursor: pointer; -} /*# sourceMappingURL=style.css.map */ \ No newline at end of file diff --git a/docs/style.css.map b/docs/style.css.map index c36b74b..c13cbd2 100644 --- a/docs/style.css.map +++ b/docs/style.css.map @@ -1,6 +1,6 @@ { "version": 3, - "mappings": "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", + "mappings": "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", "sources": [ "style.scss" ], diff --git a/docs/style.scss b/docs/style.scss index 12ecd58..6b7bdd8 100644 --- a/docs/style.scss +++ b/docs/style.scss @@ -6,7 +6,7 @@ $main-item-disabled: #8b8; $main-bg: #181818; $main-page-bg: #282828; -$main-color: #dff; +$main-color: rgb(255, 255, 255); body { @@ -17,11 +17,10 @@ body { display: grid; grid-template-rows: 50px auto 1fr auto; - grid-template-columns: 20px 1fr 20px; + grid-template-columns: 80px 1fr 80px; margin: 0; min-height: 100vh; - } a:visited { @@ -83,7 +82,8 @@ footer { } main { - padding: 0 20px; + padding: 0 150px 40px ; + margin: 5px 100px; grid-column: 2 / -2; background-color: $main-page-bg; } @@ -115,52 +115,16 @@ main { flex-grow: 1; margin: 2px; } - .slider { - -webkit-appearance: none; - -moz-appearance: none; - outline: none; - border-radius: 0; - height: 25px; - padding: 0; - margin: 2px; - cursor: pointer; - - &::-webkit-slider-thumb { - -webkit-appearance: none; - appearance: none; - border-radius: 1px; - width: 25px; - height: 25px; - background-color: $main-item-active; - margin: 0; - border-radius: 0; - border: 1px solid #000; - } - &::-moz-range-thumb { - /*TODO make this look the same as on chrome*/ - -moz-appearance: none; - width: 25px; - height: 100%; - background-color: $main-item-active; - margin: 0; - padding: 0; - border-radius: 0; - border: 1px solid #000; - } - } label { background-color: $main-bg; color: #fb8; margin: 2px; font-family: 'Consolas', 'Courier New', Courier, monospace; } - .play-button { - flex-basis: 35%; - } } .clickable { - border-radius: 4px; + border-radius: 2px; background-color: $main-item; &:hover { background-color: $main-item-hover; @@ -176,13 +140,3 @@ main { } } -.scroll-reset { - @extend .clickable; - position: fixed; - right: 20px; - bottom: 20px; - width: 40px; - height: 40px; - background-image: url("uparrow.png"); - cursor: pointer; -} diff --git a/pages/blender/index.html b/pages/blender/index.html index 2e9c943..41beb99 100644 --- a/pages/blender/index.html +++ b/pages/blender/index.html @@ -13,24 +13,25 @@

Alien Creatures animation

January 2022

youtu.be/AfRJvExamX4

- + +

Alien Tree

January 2022

- Alien Tree + Alien Tree

Decapod Alien

January 2022

- Decapod Alien + Decapod Alien

Crab

October 2021

- Crab + Crab

Shork Wallpaper

This is a wallpaper for the game Shork.

May 2021

- Shork Wallpaper + Shork Wallpaper diff --git a/pages/projects/index.html b/pages/projects/index.html index d90c0ba..ae42d61 100644 --- a/pages/projects/index.html +++ b/pages/projects/index.html @@ -11,31 +11,56 @@ **This page is a draft**

Projects:

+ + + https://github.com/CrispyPin/gd-voxel-rs +

+ I am making a voxel engine in rust to learn rust and godot-rust as well as explore voxel systems. +

+ +

Demo of fast terrain generation

+ +

Greedy mesh visualisation

+

Greedy mesh algorithm

+

The algorithm I'm using is one I made myself, inspired by a few others. I could not find an easy to understand explanation of how to do it but this artice and this article gave me somewhere to start

+ +

In this explanation I will assume basic knowledge of how meshes work and how to do the simplest form of culling for voxel meshes.

+ + +

fig. 1: example set of voxels, with the simplest form of mesh generation applied.

+ +

To start off, we can break down the problem to 2 dimensions by recognising that each direction along the axis as well as each layer along those directions is independent. We then only have to process a single 2D slice of the voxel domain at once. +

+ + +

fig. 2: The algorithm only needs to consider one layer and direction at a time, highlighted in green

+ +

The first step is to generate "strips", essentially create long quads that cover connected voxels. We can loop through the plane and keep track of at most one active strip. The active strip is the last one started and we grow it as more voxels under it are traversed. In the inner loop we check the voxel at that position as well as the one above. With this we can determine if we need to stop the current strip, start a new one or do nothing. If there is not currently an active strip, a new one should be created when the voxel below is filled and the one above is empty (an exposed surface).

+ + +

fig.3: Long strips of adjacent voxels can be merged into fewer, long quads.

+ https://github.com/CrispyPin/ovr-utils

- OVR Utils is a VR overlay application that has some useful tools for SteamVR. It has been an ongoing project since may 2021. + OVR Utils is a VR overlay application that has some useful tools for SteamVR. I have been working on it on and off since May 2021.

I wanted an overlay that could tell me the time without having to open the steam dashboard, and to see the battery levels of my controllers easily, but couldn't find one for free that also had linux support. So I decided to create my own, and also wrote down a long list of other useful tools. So far only a few of these have been implemented, such as the image overlay and the keyboard.

- - - https://github.com/CrispyPin/voxel-meshing -

- I really like voxels so I decided to try making an algorithm that generates a triangle mesh for a set of voxels. It tries to minimise the number of triangles by merging quads. -

https://github.com/CrispyPin/voxel-raymarcher + https://github.com/CrispyPin/gol-wallpaper +

See live here: gol.crispypin.cc

diff --git a/templates/footer.html b/templates/footer.html index ad7b09c..bd9071b 100644 --- a/templates/footer.html +++ b/templates/footer.html @@ -1,8 +1,8 @@

Copyright © 2022 - CrispyPin

\ No newline at end of file diff --git a/templates/meta.html b/templates/meta.html index 2c7dad7..912f8d7 100644 --- a/templates/meta.html +++ b/templates/meta.html @@ -2,4 +2,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/templates/navbar.html b/templates/navbar.html index 5e21416..96802be 100644 --- a/templates/navbar.html +++ b/templates/navbar.html @@ -1,10 +1,9 @@ \ No newline at end of file