feat: track images with git lfs

This commit is contained in:
2024-03-27 01:51:42 +01:00
parent f0129ecc76
commit 31b24de86c
142 changed files with 5133 additions and 169 deletions

BIN
src/content/blog/alpine-valley/images/DSC_1601.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/alpine-valley/images/Render.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/alpine-valley/images/Render4.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/alpine-valley/images/Render6.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/alpine-valley/images/Unbenannt-1.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/alpine-valley/images/untitled1-1.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,53 @@
---
title: "Alpine Valley"
date: 2016-12-22
headerImg: "images/Render.png"
comments: true
---
import Image from "@components/Image.astro";
import ValleyView from "./images/Render.png";
import DSC_1601 from "./images/DSC_1601.jpg";
import Unbenannt1 from "./images/Unbenannt-1.jpg";
import Render4 from "./images/Render4.png";
import UntitledPng from "./images/untitled1-1.png"
import Render6 from "./images/Render6.png";
<Image
src={ValleyView}
alt="ValleyView"
/>
This piece was inspired by a picture I took in 2013 on the way to Italy
<Image
src={DSC_1601}
alt="DSC_1601"
/>
<Image
src={Unbenannt1}
alt="Unbenannt1"
/>
The scene consists of three basic Elements, the foreground, the valley and the background image. The foreground consists of some lowpoly tree models which i created party from photoscanning and partly by handmodelling.
<Image
src={Render4}
alt="Render4"
/>
Some photoscanned rocks, centipede grass from Andrew Prices grass essentials and some plant models i created myself. As an eyecatcher i created a quick human in makehuman but didnt spend a lot of time on that as it wasnt my focus in this project.
<Image
src={UntitledPng}
alt="UntitledPng"
/>
The valley was created as usual in World Machine. For the textures i used screenshots from google maps and edited them in PixPlant to make them seamless. In Blender i used a mixture from slope, height and " noise mask to apply them to the model.
<Image
src={Render6}
alt="Render6"
/>
The background was just the picture.

View File

@ -0,0 +1,55 @@
---
title: "Alpine Valley"
date: 2016-12-22
headerImg: "images/Render.png"
comments: true
---
import Image from "@components/Image.astro";
import ValleyView from "./images/Render.png";
import DSC_1601 from "./images/DSC_1601.jpg";
import Unbenannt1 from "./images/Unbenannt-1.jpg";
import Render4 from "./images/Render4.png";
import UntitledPng from "./images/untitled1-1.png"
import Render6 from "./images/Render6.png";
<Image
src={ValleyView}
alt="ValleyView"
/>
Die Inspiration diesen Render zu machen kam von einem Bild was 2013 auf dem Weg nach Italien entstanden ist.
<Image
src={DSC_1601}
alt="DSC_1601"
/>
<Image
src={Unbenannt1}
alt="Unbenannt1"
/>
Die Szene besteht aus drei ELementen, dem Vordergrund, dem Tal und dem Hintergrund Bild. Der Vordergrund besteht aus einigen Lowpoly Baum Modellen, die ich aus gescannten und handgemodellten Modellen erstellt habe.
<Image
src={Render4}
alt="Render4"
/>
Einige 3D gescannte Steine, Centipede Grass Models aus Andrew Prices Grass Essentials Pack und einige Pflanzenmodelle die ich selber erstellt habe. Um einen gewissen Fokuspunkt im Bild zu haben habe ich in Makehuman einen Menschen erstellt wollte aber nicht allzu viel Zeit damit verbringen, weil es nicht der Hauptfokus in der Szene war.
<Image
src={UntitledPng}
alt="UntitledPng"
/>
Wie die meisten 3D Landschaften habe ich das Tal in World Machine erstellt. Die Texturen der Landschaft sind Screenshots aus Google Maps die ich mit PixPlant nahtlos gemacht habe, und danach in Blender mit verschiedenen Steigungs/Höhen und Rauschtexturen miteinander vermischt habe.
<Image
src={Render6}
alt="Render6"
/>
Der Hintergrund ist das Bild das die Inspiration für den Render war.

BIN
src/content/blog/colonial/images/Butterflies_1.gif (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/colonial/images/Mask_01.gif (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/colonial/images/Mask_02.gif (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/colonial/images/Pebbles.gif (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/colonial/images/T_MacroVariation.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,45 @@
---
title: "Colonial"
date: 2017-02-15
comments: true
---
import Image from "@components/Image.astro";
import YouTube from "@components/YouTube.astro";
import T_MacroVariation from "./images/T_MacroVariation.png";
import Mask_01 from "./images/Mask_01.gif";
import Mask_02 from "./images/Mask_02.gif";
import Pebbles from "./images/Pebbles.gif";
import Butterflies from "./images/Butterflies_1.gif";
<YouTube id="s9Z9Yh6Yu0I" />
This project kind of went a little further than i first anticipated, I first thought of it just as a little 3D modelling practice. At the same time i played around in WorldMachine to create some sort of northern atlantic style Island. After i brought the House into Unreal, i simply added the island heightmap as a Landscape and went on from there.
Gladly i still had a Landscape Material which i created a while ago, so i didnt need to set up a whole new one. The landscape utilizes a set of slope, paint and perlin noise masks to determine which parts of the landscape are grass, rock, forest, and gravel. Every single material blends between two texture sizes based on distance to the actor in the level to avoid texture tiling on distant materials. After that another layer of textures is overlayed, to add some variation to the color.
<div class="center">
<Image src={T_MacroVariation} alt="T_MacroVariation" />
</div>
I learned this technique from the materials that Unreal provides with the startup content, and it really adds to the realism of materials, i also used it in the roof material. With UnrealEngine it's also possible to create material instances to manipulate attributes of the material at runtime, i also included an option to preview the mmask live, green represents the near tiling and the pebbles, red represents the distant texture.
<Image src={Mask_01} alt="Mask_01" />
The material also utilizes Unreal engines Foliage Type feature to distribute foliage like Grass, Rocks, Forest Plants and Flowthaton their according ground. The material also blends the material according to their heightmaps which produces a very natural gradient. Notice how the grass, expand to the cracks of the rock material first.
<Image src={Mask_02} alt="Mask_02" />
The heightmap can be used to displace the physical vertices of the Landscape mesh  together with adaptive tesselation that will make the material look fucking amazing, but this feature takes a huge hit on the performance and is for live gameplay, atleast on my pc, not feasable.
<Image src={Pebbles} alt="Pebbles"/>
Another material that im really proud of is the ocean material, there is no physical displacement happening, just a lot of normal map magic. Another difficulty that i faced was the animation of the butterflies, as i am more used to the particle systems in Blender, 3DSMax and C4D Unreals so called Cascade System was not very intuituve for me.
After some time i found a solution which looks, atleast to me, natural. Now the Butterflies spawn in a small radius around a sphere which moves to a random position every two seconds, the sphere also poses as a force to the Butterflies, so they fly towards it.
<Image src={Butterflies} alt="Butterflies"/>

View File

@ -1,7 +0,0 @@
---
date: 2021-01-01
author: MaxEN
title: "First Post"
---
# First Post

View File

@ -1,7 +0,0 @@
---
date: 2021-01-01
author: MaxDE
title: "Erster Post"
---
# Erster post

View File

@ -1,7 +0,0 @@
---
date: 2021-01-01
author: MaxEN
title: "Second Post"
---
# 2. post

View File

@ -1,7 +0,0 @@
---
date: 2021-01-01
author: MaxDE
title: "Zweiter Post"
---
# 2. post

View File

@ -1,7 +0,0 @@
---
date: 2021-01-01
author: MaxEN
title: "Third Post"
---
# Third Post

View File

@ -1,7 +0,0 @@
---
date: 2021-01-01
author: MaxDE
title: "Dritter Post"
---
# Dritter Post

BIN
src/content/blog/random-renders-02/images/Cabin_new.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/random-renders-02/images/Cabin_old.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/random-renders-02/images/Home.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/random-renders-02/images/Poster_var2.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/random-renders-02/images/Workroom.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/random-renders-02/images/palma.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/random-renders-02/images/render_05.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,35 @@
---
title: "Random Renders NO°2"
date: 2023-05-11
headerImg: "images/render_05.png"
comments: true
---
import Image from "@components/Image.astro"
import Palma from "./images/palma.png"
import Render05 from "./images/render_05.png"
import Poster_var2 from "./images/Poster_var2.jpg";
import Cabin_old from "./images/Cabin_old.jpg";
import Cabin_new from "./images/Cabin_new.png";
import Home from "./images/Home.png";
import Workroom from "./images/Workroom.png";
Last month I felt like creating some renderings again. I also found a few old renderings that haven't ended up on my blog yet.
## Palma
<Image src={Palma} alt="Duude" />
## [Sudoku.nvim](https://github.com/jim-fx/sudoku.nvim)
<Image src={Render05} alt="Duude" />
<Image src={Poster_var2} alt="Poster_var2" />
## Super old renders:
<Image src={Cabin_old} alt="Cabin_old" />
<Image src={Cabin_new} alt="Cabin_new" />
<Image src={Home} alt="Home" />
<Image src={Workroom} alt="Workroom" />

View File

@ -0,0 +1,37 @@
---
title: "Random Renders NO°2"
date: 2023-05-11
headerImg: "images/render_05.png"
comments: true
---
import Image from "@components/Image.astro"
import Palma from "./images/palma.png"
import Render05 from "./images/render_05.png"
Im letzten Monat hatte ich wieder Lust, einige Renderings zu erstellen. Außerdem habe ich noch ein paar alte Renderings gefunden die noch nicht auf meinem Blog gelandet sind.
## Palma
<Image
src={Palma}
alt="Duude"
/>
## [Sudoku.nvim](https://github.com/jim-fx/sudoku.nvim)
<Image
src={Render05}
alt="Duude"
/>
![](./images/Poster_var2.jpg)
## Super old renders:
![](./images/Cabin_old.jpg)
![](./images/Cabin_new.png)
![](./images/Home.png)
![](./images/Workroom.png)

BIN
src/content/blog/random-renders-no1/images/Assets_01.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/random-renders-no1/images/Assets_02.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/random-renders-no1/images/Render_03.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/random-renders-no1/images/myown.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/random-renders-no1/images/render_01.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/random-renders-no1/images/render_02.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/random-renders-no1/images/render_04.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/random-renders-no1/images/render_05.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/random-renders-no1/images/render_06.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/random-renders-no1/images/render_07.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/random-renders-no1/images/render_08.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/random-renders-no1/images/render_09.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/random-renders-no1/images/render_10.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/random-renders-no1/images/render_11.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/random-renders-no1/images/untitled2.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,30 @@
---
title: "Random Renders NO°1"
date: 2018-12-30
headerImg: "images/myown.png"
comments: true
---
import Image from "@components/Image.astro"
import SoupKitchen from "./images/render_11.png"
import Guadelajara from "./images/Render_03.png"
import Benzema from "./images/untitled2.png"
import Wallpaper from "./images/myown.png"
A small collection of new and older renders:
## Ilse Crawfords Soup Kitchen
<Image src={SoupKitchen} alt="Ilse Crawfords Soup Kitchen"/>
## Guadelajara
<Image src={Guadelajara} alt=""/>
## Benzema
<Image src={Benzema} alt=""/>
## Wallpaper
<Image src={Wallpaper} alt=""/>

View File

@ -0,0 +1,31 @@
---
title: "Random Renders NO°1"
date: 2018-12-30
headerImg: "images/myown.png"
comments: true
---
import Image from "@components/Image.astro"
import SoupKitchen from "./images/render_11.png"
import Guadelajara from "./images/Render_03.png"
import Benzema from "./images/untitled2.png"
import Wallpaper from "./images/myown.png"
Einfach ne kleine Sammlung von aktuellen und nicht aktuellen Szenen:
## Ilse Crawfords Soup Kitchen
<Image src={SoupKitchen} alt="Ilse Crawfords Soup Kitchen"/>
## Guadelajara
<Image src={Guadelajara} alt=""/>
## Benzema
<Image src={Benzema} alt=""/>
## Wallpaper
<Image src={Wallpaper} alt=""/>

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 697 KiB

View File

@ -0,0 +1,97 @@
---
title: "How I completely rebuild my server setup."
date: 2020-06-09
comments: true
---
import Image from "@components/Image.astro"
So, this topic has been on my mind for a long time. And in the past two weeks i have finally realized it. This blog post is not meant as a guide, but as a way for future me to understand my current me's decision processes.
> **My plan is to publish the guides as separate posts later:**
>
> - [ ] _🔗 Proxying local servers with Tinc_
> - [ ] _☕+🛸=♥ Setting up a Gitea server with drone.io CI/CD_
> - [ ] _Setting up Nginx+SFTP+Traefik_
> - [ ] _Including Svelte elements in a Hugo site_
## Requirements
But before we begin to dive into the technical details of my new setup i would like to talk about the requirements i have:
### Git
This one is relatively simple; I code, so i need git. Preferably hosted publicly so that i can share code with other people, and preferably with a CI/CD pipeline attached for the benefits that CI/CD has.
### PAAS
I don't really like to worry about infrastructure, (i know ironic right). At least when I'm working on a project and the infrastructure is not the main focus for that I need a way to easily deploy any application i have to the cloud.
### Static Hosting
Because I code a lot of small static HTML+CSS+Javascript websites and experiments I want to have a way to quickly host them somewhere. Also this Blog needs to be hosted somewhere.
### Blogging
I dont write a lot of blog posts at all, but i still like to have a central platform to put my thoughts onto.
### Filesharing
Most of the time i keep my project file both on my laptop and my main pc. If i work on a coding project i can sync those with git, but for that i need to commit and push every time i switch my pc. For 3D/Media that workflow is not very feasible. To achieve a better workflow I need a File sharing platform, which i definitely want to self host for one because storing a lot of data with a third party is expensive and because i want to be in control of my own data.
&nbsp;
## My previous setup
In my previous setup i used a mixture of external services. For **git hosting** i have experience with Github, Gitlab and Bitbucket. I have experience with a few **PaaS** providers, IBM Cloud, Google Cloud but mostly Heroku because it is very easy to use. My **static website** was hosted with one.com, again because it was very easy to use. I have tried a few different **Filesharing** solutions in the past, from Google Drive, Dropbox and Mega and some self hosted solutions like Koken.me, Syncthing and Nextcloud. But in the last year i did not use any File sharing at all.
&nbsp;
## My new Setup
![New Setup](./images/new-server.svg)
Now, the first question that may come to mind is, "Why do you use both cloud and local servers?". There are some drawbacks and some benefits to both. Cloud servers provide fast network speeds and static public IPs but storing large amount of data is kind of expensive. Disk space is comparably cheap with local servers I paid around 60€ for my 1tb harddrive which is made specifically for nas situations with drives running 24/7. Also i really like the idea of having physical access to my own data and not having to trust a third party with it. Another benefit to having physical access to my own server is that i can tinker with hardware aspects like networking, drives and cooling as well as taking physical measurements like room temperature and humidity.
To be totally honest the main reason for me to use a cloud server is because i cant use port forwarding on my local network because we (me and my flatmates) dont know the password to our router 🤦. The solution to that is to create a vpn network with my cloud server and proxy all requests through it.
The whole process of setting up my new infrastructure was mainly my trying out different tech stacks until i found one i liked. So, what i choose in the end:
&nbsp;
### Git
I definitely wanted to setup a git server on my local raspberry pi, because i want to own my own code, if that makes sense. My first instinct was to use Gitlab, because i really like the integrated ci/cd pipeline, so i downloaded the appropriate docker-compose.yml, started and made my pi instantly unusable because it was so performance intensive. So Gitlab was definitely not the right choice for me.
After that i tried Gogs, which is a lightweight git server build with Go. I really liked the simplicity of the setup and the configuration, but the integration with my ci/cd server of choice, drone.io was not very easy.
So finally i ended up with my current setup which is running a Gitea, and Drone.io Instance on my pi, with the Drone.io CI/CD runner running in the cloud. I started the Drone.io runner in the cloud because the pi is arm based and that caused some problems with certain docker images.
### PAAS
My first idea was to use Dokku, but for some reason i had a lot of problems setting up dokku as a docker image. Then i tried caprover which is a rebranding of a project called CaptainDuckDuck, which is imho a wayyy better name. Caprover was super easy to setup and its super easy to deploy to.
### Static Hosting
This was a very easy decision, as i already had some good experience with nginx and some not so good experience with the configuration of apache. On my cloud server i provisioned a harddrive with a folder which is being mounted into a nginx docker image and a sftp docker image.
### Blogging
Coming from some experience with developing wordpress sites i definitely did not want to keep my old wordpress site. Honestly i did not try a lot of different solutions as Hugo just seemed to click with me, from the blazing fast site generation to the very minimal overhead to the incredible flexible asset pipelines.
### Filesharing
Nextcloud, easy. I just like it and it does not seem to have any competitors with the same amount of functionality.
&nbsp;
## Conclusion
This was a very good learning experience for me and just so much fun. My future plans are to expand my local server setup to a cluster build out of pies and also maybe to try out wireguard instead of tinc because it seems to be way faster.
&nbsp;
&nbsp;
Cheers thats all for now,
Max

View File

@ -0,0 +1,85 @@
---
title: "Wie ich mein Server-Setup komplett neu aufbaue."
date: 2020-06-09
comments: true
---
import Image from "@components/Image.astro"
Dieses Thema beschäftigt mich also schon seit längerem. Und in den letzten zwei Wochen ist es mir endlich klar geworden. Dieser Blogbeitrag ist nicht als Leitfaden gedacht, sondern als Möglichkeit für mein zukünftiges Ich, die Entscheidungsprozesse meines jetzigen Ichs zu verstehen.
> **Mein Plan ist es, die Leitfäden später als separate Beiträge zu veröffentlichen:**
> > - [ ] _🔗 Proxying lokaler Server mit Tinc_
> > - [ ] _☕+🛸=♥ Einrichten eines Gitea-Servers mit Drone.io CI/ CD_
> > - [ ] _Nginx+SFTP+Traefik einrichten_
> > - [ ] _Svelte-Elemente in eine Hugo-Site einbinden_
## Anforderungen
Bevor wir uns jedoch mit den technischen Details meines neuen Setups befassen, möchte ich über meine Anforderungen sprechen:
### Git
Dieser ist relativ einfach; Ich programmiere, also brauche ich Git. Vorzugsweise öffentlich gehostet, damit ich Code mit anderen Leuten teilen kann, und vorzugsweise mit angeschlossener CI/CD-Pipeline, um die Vorteile von CI/CD nutzen zu können.
### PAAS
Ich mag es nicht wirklich, mich um die Infrastruktur zu kümmern, (ich weiß, ironisch, oder?). Zumindest, wenn ich an einem Projekt arbeite und die Infrastruktur nicht der Hauptfokus ist, brauche ich eine Möglichkeit, jede Anwendung, die ich habe, einfach in die Cloud zu deployen.
### Static Hosting
Weil ich viele kleine statische HTML+CSS+Javascript-Websites und -Experimente programmiere, möchte ich eine Möglichkeit haben, sie schnell irgendwo zu hosten. Auch dieser Blog muss irgendwo gehostet werden.
### Blogging
Ich schreibe nicht viele Blogbeiträge, aber ich möchte trotzdem eine zentrale Plattform haben, um meine Gedanken festzuhalten.
### Filesharing
Die meiste Zeit halte ich meine Projektdatei sowohl auf meinem Laptop als auch auf meinem Haupt-PC. Wenn ich an einem Codierungsprojekt arbeite, kann ich diese mit Git synchronisieren, aber dafür muss ich jedes Mal, wenn ich meinen PC wechsle, committen und pushen. Für 3D/Media ist dieser Workflow nicht sehr praktikabel. Um einen besseren Workflow zu erreichen, benötige ich eine Filesharing-Plattform, die ich definitiv selbst hosten möchte, zum einen, weil das Speichern einer großen Datenmenge bei einem Drittanbieter teuer ist, und zum anderen, weil ich die Kontrolle über meine eigenen Daten haben möchte.
## Mein vorheriges Setup
In meinem vorherigen Setup habe ich eine Mischung aus externen Diensten verwendet. Für **Git-Hosting** habe ich Erfahrung mit Github, Gitlab und Bitbucket. Ich habe Erfahrung mit einigen **PaaS**-Anbietern, IBM Cloud, Google Cloud, aber hauptsächlich Heroku, weil es sehr einfach zu bedienen ist. Meine **statische Website** wurde mit one.com gehostet, wiederum, weil es sehr einfach zu bedienen war. Ich habe ein paar verschiedene **Filesharing**-Lösungen ausprobiert, von Google Drive, Dropbox und Mega und einigen selbst gehosteten Lösungen wie Koken.me, Syncthing und Nextcloud. Aber im letzten Jahr habe ich überhaupt kein Filesharing genutzt.
## My new Setup
![New Setup](./images/new-server.svg)
Eine Frage, die man sich jetzt stellen könnte wäre: „Warum benutzt du Cloud und lokale Server?“ Beide haben einige Nachteile und einige Vorteile. Cloud-Server bieten schnelle Netzwerkgeschwindigkeiten und statische öffentliche IPs, aber die Speicherung großer Datenmengen ist recht teuer. Der Festplattenspeicher ist bei lokalen Servern vergleichsweise günstig. Ich habe etwa 60 € für meine 1-TB-Festplatte bezahlt, die speziell für NAS-Situationen entwickelt wurde, bei denen die Laufwerke rund um die Uhr laufen. Außerdem gefällt mir die Idee sehr gut, physischen Zugriff auf meine eigenen Daten zu haben und diese nicht einem Dritten anvertrauen zu müssen. Ein weiterer Vorteil des physischen Zugriffs auf meinen eigenen Server besteht darin, dass ich an Hardwareaspekten wie Netzwerk, Laufwerken und Kühlung herumbasteln und physische Messungen wie Raumtemperatur und Luftfeuchtigkeit vornehmen kann.
Um ganz ehrlich zu sein, der Hauptgrund für mich, einen Cloud-Server zu verwenden, ist, dass ich auf meinem lokalen Netzwerk kein Port-Forwarding verwenden kann, weil wir (meine Mitbewohner und ich) das Passwort zu unserem Router nicht kennen 🤦. Die Lösung dafür ist, ein VPN-Netzwerk mit meinem Cloud-Server zu erstellen und alle Anfragen darüber zu proxyen.
Die Idee ist also, dass ich meinen lokalen Server als Hauptserver verwende und den Cloud-Server als Proxy verwende, um auf meinen lokalen Server zuzugreifen. Der Cloud-Server wird auch als Backup-Server für meine Dateien verwendet, falls mein lokaler Server ausfällt.
### Git
Ich wollte definitiv einen Git-Server auf meinem lokalen Raspberry Pi einrichten, weil ich meinen eigenen Code besitzen wollte, wenn das Sinn macht. Mein erster Instinkt war, Gitlab zu verwenden, weil ich die integrierte CI/CD-Pipeline wirklich mag, also habe ich die entsprechende docker-compose.yml heruntergeladen, gestartet und meinen Pi sofort unbrauchbar gemacht, weil es so leistungsintensiv war. Also war Gitlab definitiv nicht die richtige Wahl für mich.
Danach habe ich Gogs ausprobiert, das ist ein leichtgewichtiger Git-Server, der mit Go erstellt wurde. Mir gefiel die Einfachheit des Setups und der Konfiguration wirklich gut, aber die Integration mit meinem CI/CD-Server der Wahl, drone.io, war nicht sehr einfach.
Also landete ich schließlich bei meinem aktuellen Setup, das einen Gitea- und einen Drone.io-Server auf meinem Pi mit einem in der Cloud laufenden Drone.io CI/CD-Runner umfasst. Ich habe den Drone.io-Runner in der Cloud gestartet, weil der Pi arm-basiert ist und das bei bestimmten Docker-Images Probleme verursacht hat.
### PAAS
Meine erste Idee war, Dokku zu verwenden, aber aus irgendeinem Grund hatte ich viele Probleme, Dokku als Docker-Image einzurichten. Dann habe ich Caprover ausprobiert, das eine Neubrandung eines Projekts namens CaptainDuckDuck ist, was meiner Meinung nach ein viel besserer Name ist. Caprover war super einfach einzurichten und es ist super einfach zu deployen.
### Static Hosting
Ich habe mich für Nginx entschieden. Dies war eine sehr einfache Entscheidung, da ich bereits einige gute Erfahrungen mit nginx und einige nicht so gute Erfahrungen mit der Konfiguration von Apache hatte. Auf meinem Cloud-Server habe ich eine Festplatte mit einem Ordner bereitgestellt, der in ein Nginx-Docker-Image und ein SFTP-Docker-Image eingebunden ist.
### Blogging
Aufgrund einiger Erfahrung in der Entwicklung von WordPress-Sites wollte ich meine alte WordPress-Site definitiv nicht behalten. Ehrlich gesagt habe ich nicht viele verschiedene Lösungen ausprobiert, da Hugo einfach zu mir passte, von der rasend schnellen Site-Generierung über den sehr minimalen Overhead bis hin zu den unglaublich flexiblen Asset-Pipelines.
### Filesharing
Ich habe mich für Nextcloud entschieden, weil ich es einfach mag und es keine Konkurrenz mit der gleichen Funktionalität zu geben scheint.
## Abschluss
Alles in allem bin ich sehr zufrieden mit meinem neuen Setup. Ich habe viel gelernt und es hat mir viel Spaß gemacht. Meine zukünftigen Pläne sind, mein lokales Server-Setup zu einem Cluster-Build aus Pies zu erweitern und auch vielleicht Wireguard anstelle von Tinc auszuprobieren, weil es anscheinend viel schneller ist.
Cheers,
Max

BIN
src/content/blog/sketche-01/images/Baakk.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/sketche-01/images/Sketche_No1.jpg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,12 @@
---
title: "Sketche 01"
date: 2017-05-08
headerImg: "images/Baakk.jpg"
---
import Image from "@components/Image.astro";
import SketcheNo1 from "./images/Sketche_No1.jpg";
Yup, i bought a graphics tablet.
<Image src={SketcheNo1} alt="Sketche No1" />

View File

@ -0,0 +1,13 @@
---
title: "Sketche 01"
date: 2017-05-08
headerImg: "images/Baakk.jpg"
---
import Image from "@components/Image.astro";
import SketcheNo1 from "./images/Sketche_No1.jpg";
Ratet mal wer sich gerade ein Zeichentablett gekauft hat :)
<Image src={SketcheNo1} alt="Sketche No1" />

BIN
src/content/blog/speed_scene_03/images/Render_04.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/speed_scene_03/images/Render_05-2.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,18 @@
---
title: "Speed_Scene_03"
date: 2017-02-03
headerImg: "images/Render_04.png"
comments: true
---
import Image from "@components/Image.astro"
import Render04 from "./images/Render_04.png";
import Render05 from "./images/Render_05-2.png";
<Image src={Render04} alt="Speed_Scene_03" />
After some corrections, (thanks /r/blender).
<Image src={Render05} alt="Speed_Scene_03" />
Basically a small exercise to improve my skills with architecture scenes. Here is the original scene, I took a template to not spend time with concept work.

View File

@ -0,0 +1,18 @@
---
title: "Speed_Scene_03"
date: 2017-02-03
headerImg: "images/Render_04.png"
comments: true
---
import Image from "@components/Image.astro"
import Render04 from "./images/Render_04.png";
import Render05 from "./images/Render_05-2.png";
<Image src={Render04} alt="Speed_Scene_03" />
Nach einigen Korrekturen, (danke /r/blender).
<Image src={Render05} alt="Speed_Scene_03" />
Im Grunde ne kleine Übung um meine Skills mit Architektur Szenen zu verbessern. Hier ist die Ursprungsszene, ich habe ne Vorlage genommen, um keine Zeit mit Konzeptarbeit zu verbringen:

BIN
src/content/blog/speed_scene_0405/images/Render_01.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/speed_scene_0405/images/untitled.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,13 @@
---
title: "Speed_Scene_04/05"
date: 2017-03-13
headerImg: "Render_01.jpg"
comments: true
---
import Image from "@components/Image.astro";
import Render01 from "./images/Render_01.jpg";
import Untitled from "./images/untitled.png";
<Image alt="Render 01" src={Render01} />
<Image alt="Untitled" src={Untitled} />

View File

@ -0,0 +1,14 @@
---
title: "Speed_Scene_04/05"
date: 2017-03-13
headerImg: "Render_01.jpg"
comments: true
---
import Image from "@components/Image.astro";
import Render01 from "./images/Render_01.jpg";
import Untitled from "./images/untitled.png";
<Image alt="Render 01" src={Render01} />
<Image alt="Untitled" src={Untitled} />

BIN
src/content/blog/station-b3-4-offline/images/Car.png (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
src/content/blog/station-b3-4-offline/images/Station.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/station-b3-4-offline/images/human.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/station-b3-4-offline/images/untitled-2.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,35 @@
---
title: "Station B3-4 Offline"
date: 2016-12-21
headerImg: "Station.jpg"
comments: true
---
import Image from "@components/Image.astro"
import Untitled2 from "./images/untitled-2.png"
import Snowy_Mountains from "./images/Snowy_Mountains.png"
import Car from "./images/Car.png"
import Station from "./images/Station.jpg"
import Human from "./images/human.png"
Einheit B3-4 wurde entsandt um zu überprüfen, was den Ausfall verursacht hat, und um die Einheit wieder ins Netz zu bringen. Sein Fahrzeug bringt ihn so weit wie die letzten Straßen gehen.
Von dort an muss er seine Kletterfähigkeiten und seine hochentwickelte Ausrüstung nutzen, um zur Station zu gelangen.
<Image src={Untitled2} alt="Station B3-4 Offline" />
Die Berge wurden in World Machine generiert, von dort exportierte ich die Berge als Objektdatei, eine Farbkarte und eine Normalenkarte. In Blender habe ich die Berge von etwa 1 Million Vertices auf 150.000 Vertices reduziert und die Normalenkarte verwendet, um die verlorenen Details zurückzugewinnen.
<Image src={Snowy_Mountains} alt="Snowy Mountains" />
Das Auto ist ein sogenannter Whillys Jeep, den ich vor einiger Zeit für ein Spielprojekt modelliert habe.
<Image src={Car} alt="Car" />
<Image src={Station} alt="Station" />
Der Mensch begann als ein Projekt, um einen hochtechnologisch fortgeschrittenen Kletterer zu modellieren, und ist tatsächlich der erste Mensch, den ich je modelliert habe.
<Image src={Human} alt="Human" />

View File

@ -0,0 +1,35 @@
---
title: "Station B3-4 Offline"
date: 2016-12-21
headerImg: "Station.jpg"
comments: true
---
import Image from "@components/Image.astro"
import Untitled2 from "./images/untitled-2.png"
import Snowy_Mountains from "./images/Snowy_Mountains.png"
import Car from "./images/Car.png"
import Station from "./images/Station.jpg"
import Human from "./images/human.png"
Unit
Unit B54 was dispatched to check what caused the failure, and to get the unit back on the net. His vehicle brings him as far as the last roads go.
From there on he has to use his climbing skills and his highly developed equipment to get to the station.
<Image src={Untitled2} alt="Station B3-4 Offline" />
I used world machine to generate the mountains, from wm I exported the mountains as obj file a color map and an normal map. In blender i decimated the mountains from around 1 million vertices to 150.000 vertices, and used the normal map to gain back the lost detail.
<Image src={Snowy_Mountains} alt="Snowy Mountains" />
The car is a so called Whillys Jeep which i modelled a while ago for a game project.
<Image src={Car} alt="Car" />
<Image src={Station} alt="Station" />
The human started as an project to model a highly technologically advanced climber, and is actually the first human I've ever modelled.
<Image src={Human} alt="Human" />

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
src/content/blog/surfirvorcamp-esmoriz/images/MAX_4978.jpg (Stored with Git LFS) Normal file

Binary file not shown.

Binary file not shown.

BIN
src/content/blog/surfirvorcamp-esmoriz/images/MAX_5075.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/surfirvorcamp-esmoriz/images/MAX_5112.jpg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,53 @@
---
title: "Surfirvorcamp | Esmoriz"
date: 2017-04-18
headerImg: "MAX_4978.jpg"
comments: true
---
import YouTube from "@components/YouTube.astro";
import Image from "@components/Image.astro";
import MAX_4978 from "./images/MAX_4978.jpg";
import MAX_4758 from "./images/MAX_4758-Recovered-1.jpg";
import MAX_4888 from "./images/MAX_4888-Recovered.jpg";
import MAX_4997 from "./images/MAX_4997-Recovered.jpg";
import MAX_4967 from "./images/MAX_4967-Recovered.jpg";
import MAX_4945 from "./images/MAX_4945-Recovered.jpg";
import IMG_20170416_WA0007 from "./images/IMG-20170416-WA0007.jpg";
import MAX_5075 from "./images/MAX_5075.jpg";
import IMG_20170416_WA0001 from "./images/IMG-20170416-WA0001.jpg";
import MAX_5112 from "./images/MAX_5112.jpg";
<YouTube id="xREriF-WuOA"/>
Letzten Freitag habe ich sehr spontan eine Woche Surfkurs in Esmoriz gebucht zum einen weil ich nen bisschen irgendwo absacken wollte und zum anderen weil Pella auch da war. Ich hatte ne super Woche das Surfivorcamp kann ich nur jedem empfehlen tolle Leute super entspannte Atmosphäre.
<Image src={MAX_4978} alt="Surfivorcamp"/>
Freitag an dem Tag sind wir das erste Mal ohne Trainer surfen gewesen und Pella hat sich nettwerweise bereiterklärt Paparazzi zu spielen. Von Links nach Rechts, Thomas, Jamie, Ich und Florian. Thomas und Florian sind Lehrer und Jamie hat ne Woche Saufurlaub mit seinen Kumpels hinter sich. Sehr korrekte Leute. An den ersten Tagen waren noch Ellen, Alba und Lucas dabei aber zur Zeit des Fotos waren die schon abgereist.
<Image src={MAX_4758} alt="Surfivorcamp"/>
<Image src={MAX_4888} alt="Surfivorcamp"/>
Das war kurz nach dem ich meinen Dreifachen Rückwärtssalto auf der 7 Meter Welle hingelegt habe.
<Image src={MAX_4997} alt="Surfivorcamp"/>
Flo wollte mir nochmal sagen wie siiiiiiick der Rückwärtssalto war.
<Image src={MAX_4967} alt="Surfivorcamp"/>
<Image src={IMG_20170416_WA0007} alt="Surfivorcamp"/>
Ausflug nach Porto, was macht man in Porto? Richtig Portwein trinken. Sponsored by Flo. Rechts von der Mitte war noch Juri dazugekommen, ein Surfer-Softwareentwickler dem es in Lissabon zu voll geworden war.
<Image src={MAX_5075} alt="Surfivorcamp"/>
Pella die Profi Weinprobiererin.
<Image src={IMG_20170416_WA0001} alt="Surfivorcamp"/>
Nach dem Portwein haben wir Francesinha gegessen, ich glaube mein neues dritt Lieblingsessen. Nichts kommt vor frittierten Meeresfrüchten in Italien und dem Thunfischsandwich von Papa. Das Grundkonzept ist, man stapelt soviele fettige Sachen wie möglich übereinander sprich, Wurst, Steak, Schinken Würstchen packt das alles zwischen zwei Scheiben Brot überbackt das alles mit Käse, manchmal nen Spiegelei obendrauf, setzt alles in ne Schale mit Soße und fertig ist der Arterienalbtraum. Aber ein sooooo leckerer.
<Image src={MAX_5112} alt="Surfivorcamp"/>

BIN
src/content/blog/the-end/images/Render_01.jpg (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/the-end/images/Render_05.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,29 @@
---
title: "The End"
date: 2017-02-02
headerImg: "Render_01.jpg"
comments: true
---
import Image from "@components/Image.astro";
import YouTube from "@components/YouTube.astro";
import Render01 from "./images/Render_01.jpg";
import Render05 from "./images/Render_05.png";
<Image src={Render01} alt="Render 01" />
Dies war auch die erste Szene zu der ich ne Timelapse gemacht hab:
<YouTube id="and_naZbGHE" />
Die Inspiration zu dieser Szene kam unerwartet, und war aber auch irgendwie schon lange da. Am Dienstag den zweiten Februar 2016 habe ich eine Datei erstellt mit den Namen Desert_The_End.blend. Dann habe ich gestern dass Musik Video zu Gorillaz - Stylo gesehen, und so habe ich dann angefangen.
<Image src={Render05} alt="Render 05" />
Ich finde es sehr schön, wenn man sehen kann dass man Fortschritte macht, aber gleichzeitig auch alles was man je gemacht hat der Grundstein ist für alles was man macht, und machen wird. Aus diesem Projekt konnte ich die Kakteen und das Straßenschild entnehmen. Den Rest habe ich handgemodelt, arbeite gerade auch an einer Timelapse zu dem Projekt. In der Szene habe ich zwei stark bearbeitete Assets von Blendswap verwendet, welche ich nur jedem empfehlen kann:
[Low Poly Grass Patches (+LoD)](http://www.blendswap.com/blends/view/71002)
[Low Poly Tree Next Gen](http://www.blendswap.com/blends/view/70949)
Bei der Straße habe ich stark auf das neue Microdisplacement Feature in Blender gesetzt. Das größte Problem beim arbeiten an dem Projekt war dass Blenders Crashwarscheinlichkeit um einiges höher ist wenn im Hintergrund Nvidia Shadowplay läuft. Noch nie war ich so dankbar ein gutes Autosave system zu haben wie hier.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,24 @@
---
title: "Timelaps Rig Pi-Zero Project"
date: 2017-01-21
comments: true
---
import Image from "@components/Image.astro";
import YouTube from "@components/YouTube.astro";
import Untitled1_low from "./images/untitled1_low.png";
import Untitled3 from "./images/untitled3.png";
Ich habe schon seid längerem den Plan, mit dem Pi-Zero eine Art Zeitraffer Rig zu bauen ungefähr so:
<YouTube id="olx_p6AJXZI" />
Dazu habe ich mir drei [Nema 17 Stepper Motor](http://www.ebay.de/itm/262028165823), drei [L9110s](http://www.ebay.de/itm/like/272305858883) und eine RAVPower 10400MAh Powerbank besorgt. Der Plan dass der PI ein Bluetooth PAN Netzwerk aufbaut, wo ich mich mit meinem Handy einklinke und über SSH einen Pythonskript steuere, welcher die Schrittmotoren ansteuert. Bis dahin klappt auch schon alles, nur nach einer Woche elektronischen Faustkampfes mit dem Pi, verschiedenen Driver Boards und sehr vielen Foren habe ich fast aufgegeben, den aus irgendwelchen Gründen krieg ich es nicht hin die Schrittmotoren zum laufen zu bringen. Bis jetzt habe ich das L9110s mit dem Schrittmotor verbunden aber der Pythonskript der bei einem anderen Schrittmotor funktioniert ([Schrittmotor](http://www.funduinoshop.com/Schrittmotor)) führt hier nur zu einem kläglichen Zittern des NEMA.
<Image src={Untitled1_low} alt="untitled1_low" />
<Image src={Untitled3} alt="untitled3" />
Damit das Projekt leichter zu realisieren ist, habe ich aus Plänen die ich online über die einzelnen Bauteile gefunden habe, das komplette Rig nachgemodelt. Außerdem hatte ich keine Lust mehr mich mit den Schrittmotoren selber zu beschäftigen, da ich sie einfach nicht dazu überredet gekriegt hab dass zu tuen was sie tuen sollten.
Irgendwann hatte ich keine weiteren Ideen was ich falsch machen könnte und so konsultierte ich das Deutsche RPi-Forum. nach ungefähr 3 Stunden hatte ich meine Antwort, Das Driverboard war das falsche und die Powerbank hat zu wenig Ampere um den Pi und die Schrittmotoren anzutreiben. Also sitze ich jetzt hier und warte seit zwei Wochen auf die Driverboards die ich bestellt habe, und deren Verkäufer mir eine Email aus HongKong geschickt hat, dass sie leider noch nicht verschickt worden sind, da sie gerade das Chinesische Neujahr feiern.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
src/content/blog/webgl-showcase/images/wHarG.jpg (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,105 @@
---
title: "WebGL Showcase"
date: 2018-01-03
headerImg: "images/Bildschirmfoto-2018-01-03-um-13.09.42-2.png"
comments: true
---
import Image from "@components/Image.astro";
import YouTube from "@components/YouTube.astro";
import Screenshot1 from "./images/Bildschirmfoto-2018-01-03-um-13.18.45-2.png";
import Screenshot2 from "./images/Bildschirmfoto-2018-01-03-um-13.18.27-2.png";
import Screenshot3 from "./images/Bildschirmfoto-2018-01-03-um-13.17.57-2.png";
import Screenshot4 from "./images/Bildschirmfoto-2018-01-03-um-13.09.42-2.png";
import WHarG from "./images/wHarG.jpg";
Vorerst etwas Story:
Ich habe mich in letzter Zeit sehr viel mit dem Programmieren von Webanwendungen beschäftigt, angefangen über statisches HTML und CSS, dann bin ich zu Javascript übergegangen und jetzt schließlich Node.js. Im
Grunde hat mich programmieren schon vor sehr langer Zeit gepackt, und zwar als ich mit meinem besten Freund für ein Schulpraktikum vier Wochen auf einer Farm in Kanada verbracht hab. Ich wollte diese Erfahrung irgendwie festhalten nicht nur in Bildern und Videos sondern auch interaktiv, der Plan war eine Reihe von Bildern von der Farm zu machen und auf einer Website eine Art Suchbild/Weg durch die Farm zu erstellen. Der User sollte dann auf bestimme parts in dem Foto klicken können, eventuell Infos dazu bekommen und sich so durch die Farm bewegen. Ich weiß noch dass ich es geschafft habe dass erste Bild einzubinden und vollflächig darzustellen. Dann habe ich die anderen zerschnipselt und versucht über dass erste zu legen und meine Fresse war die Scheiße frustrierend, an alle die schonmal versucht habe Dinge mit CSS zu positionieren ohne überhaupt zu wissen was der Unterschied zwischen "absolute" und "relative" ist, ich denke ihr wisst wie es ausgegangen ist, an alle anderen stellt es euch vor als würdet ihr versuchen nen 20. seitige Broschüre in Word gestalten.  Diese Website verstaubt ihm Moment auf ner alten Festplatte von mir, naja vielleicht grab ich sie eines Tages noch aus.
Dann bin ich im Zuge meiner Arbeit irgendwie auf WebGL, dass ist eine Technologie die auf einer anderen Technologie (OpenGL) beruht, die wiederum so gut wie alle Live 3D Anwendung ermöglicht, WebGL also macht es möglich 3D im Internet zu haben, echtes, interaktives 3D. Ich war ziemlich begeistert. Ich denke im Nachhinein war es der perfekte Einstieg für mich, ich kannte schon die ganzen Fremdwörter aus dem 3D Bereich, deswegen war es nicht so schwierig für mich. Des Weiteren hat mir eine grandiose Javascript Library namens three.js geholfen, eine Library ist im Grunde eine kleine extra Programmiersprache, der man dann nur einfache Dinge sagen muss, wie zum Beispiel "new THREE.PerspectiveCamera( 45, width / height, 1, 1000 );" und die dann die ganzen komplizierten Sachen für einen macht.
Meine erste 3D Anwendung ist bist jetzt auch meine komplizierteste da ich immer weiter daran arbeite. Eine Visualisierung von einem von mir erstellten Raum:
[Link](/modern/?scene=modern)
Bis jetzt habe ich zwei Szenen erstellt einmal "modern" und einmal "dwfb", beide kann man erreichen in dem man in der URL hinter "szene=" den Szenennamen schreibt. Da in "dwfb" diverse 4k Texturen sind, sind die Ladezeiten alles andere als schön.
# Sachen die ich beim Programmieren von dieser Website gelernt habe:
OOP:
OOP steht für Object Oriented Programming, dass heißt der Code ist in Objekte aufgeteilt die untereinander kommunizieren, dass macht es einfacher Fehler zu finden, und den Code zu erweitern.
Nerdstuff:
jaja ich weiß OOP, dass ist ja mal so was von 2015
Functional Programming ist das Neue Ding und so, ey ich habe
quasi gerade erst angefangen zu Programmieren mir reicht OOP
für jetzt erstmal. Also
JSON:
JSON steht for JavaScript Object Notation, ich brauchte für das Projekt einen besseren Weg meine Objekte in die Szene zu laden als den Standardweg, deswegen habe ich ein Loader Objekt programmiert, was zuerst aus einer .json Datei den Grundaufbau der Szene lädt, d.h. welche Objekte an welcher Position stehen, welche Materialien diese Objekte haben usw, danach lädt es diese Objekte, erstellt die Materialien unternimmt diverse Optimierung an der Szene, und lädt dann zum Schluss die Szene.
---
Nerdstuff:
Sobald der Loader initalisiert wird erstellt er eine Szene.
Dann kann man über Loader.load("Pfad/Zur/Json/Datei") dein Ladevorgang starten.
Die JSON Datei wird per XMLHttpRequest geladen, dann geparst.
Die Datei enthält den Namen der Szene, einen Array für alle HDRI's, einen Array für alle Objekte,
und einen für alle Materialen. Der Aufbau ist darauf ausgelegt möglich
wenige requests zu machen, und wegen der Redundanz der einzelnen Objekte,
eine HDRIS wird von vielen Materialien verwendet, eine Textur eher selten deswegen sind
die Texturen in den Materialien Array eingebettet.
Zur Optimierung der FPS kann man den Objekten eine "statische"
Eigenschaft geben, alle statischen Objekte werden in Buffergeometry
umgewandelt, dass heißt die Koordinaten der einzelnen Vertices liegen nicht im Format
\{xyz\}\{xyz\}\{xyz\}\{xyz\} vor sondern so: \{xyzxyzxyzxyz\}. Dies verringert die Kommunikation
zwischen CPU und GPU. Außerdem werden alle statischen Objekte zu einem Mesh
zusammengefügt was wiederum denselben Effekt hat.
Hier der Link zur JSON Datei:
[LINK](/modern/3D/modern/modern.json) Und hier der Link zum Loader Modul:
[LINK](/modern/js/loader.js)
ArchVizControls:
Architecture Visualizations Controls, es gibt schon diverse fertig programmierte Objekte die den User die Kamera kontrollieren lassen. Diese hatten allerdings diverse Limitationen die ich nicht umgehen konnte deshalb habe ich meine eigenen Controls programmiert. Diese haben den Vorteil das sie sehr einfach einen 3D Cursor unterstützen, genauere Begrenzung der Kamera Rotation, und der Auto Rotation der Kamera und bessere Drag Controls.
---
Nerdstuff:
Die Komplikation bei den OrbitControls.js die ich vorher benutzt habe
war dass der Author die kompletten Rotation auf der Y-Achse von -PI bis
+PI moduliert hat, das Problem ist hier etwas verdeutlicht:
<Image src={WHarG} alt="WHarG" />
Nachdem ich dazu eine Frage auf Stackoverflow gestellt habe,
wurde ich darauf hingewiesen dass ich relativ leicht meine
eigenen Controls programmieren kann. Einfach ein Empty Objekt,
an welches die Kamera geparented ist. Dann muss man nur noch aus
der MouseDown Position und der aktuellen Mouse Position einen
Vektor erstellen und diesen als Rotation auf das Empty Objekt anwenden.
Dazu dann noch ein Raycaster, welcher die Interaktion mit dem 3D Cursor
und klickbaren Objekten ermöglicht, und eine Animationsmodul zum
animieren der Kamera wenn man auf etwas klickt uuuuuund
fettich.
Screenshots:
Modern:
<Image src={Screenshot1} alt="Screenshot 1" />
<Image src={Screenshot2} alt="Screenshot 2" />
DWFB:
<Image src={Screenshot3} alt="Screenshot 3" />
<Image src={Screenshot4} alt="Screenshot 4" />

BIN
src/content/blog/workroom-no2/images/untitled6.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/workroom-no2/images/untitled7.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/workroom-no2/images/untitled8.png (Stored with Git LFS) Normal file

Binary file not shown.

View File

@ -0,0 +1,27 @@
---
title: "Workroom No°2"
date: 2017-05-26
headerImg: "images/untitled7.png"
comments: true
---
import Image from "@components/Image.astro";
import YouTube from "@components/YouTube.astro";
import Untitled6 from "./images/untitled6.png";
import Untitled7 from "./images/untitled7.png";
import Untitled8 from "./images/untitled8.png";
This time i made a lot of changes to the wood material, i basically completely redid it. So this time the normal map looks a lot better. In the last material you could see the wooden fibers as structur in on the surface, which is highly unnatural for a polished surface.
<Image src={Untitled6} alt=""/>
Then i added edgewear, so there are some fine scratches and imperfections on the edges aswell as some dust on the surface that are pointing upwards.
<Image src={Untitled7} alt=""/>
This was new and exciting as ai got to use my tablet to sculpt the high poly model, which was a evry fun process.
<Image src={Untitled8} alt=""/>
New wooden floor material i really like.

BIN
src/content/blog/workroom/images/untitled.png (Stored with Git LFS) Normal file

Binary file not shown.

BIN
src/content/blog/workroom/images/untitled1.png (Stored with Git LFS) Normal file

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More