first commit

This commit is contained in:
Troy 2024-12-23 21:18:55 +00:00
commit ff7c974867
Signed by: troy
GPG key ID: DFC06C02ED3B4711
227 changed files with 12908 additions and 0 deletions

76
src/content/config.ts Normal file
View file

@ -0,0 +1,76 @@
import { defineCollection, z } from "astro:content";
const posts = defineCollection({
type: "content",
schema: ({ image }) =>
z.object({
title: z.string(),
description: z.string(),
date: z.coerce.date(),
updated: z.date().optional(),
draft: z.boolean().optional(),
image: z.object({
url: image(),
alt: z.string(),
}),
tags: z.array(z.string()),
extraAuthors: z.array(z.string()).optional(),
categories: z.array(z.string()),
}),
});
const projects = defineCollection({
type: "content",
schema: ({ image }) =>
z.object({
title: z.string(),
description: z.string(),
date: z.coerce.date(),
updated: z.date().optional(),
draft: z.boolean().optional(),
image: z.object({
url: image(),
alt: z.string(),
}),
tags: z.array(z.string()),
extraAuthors: z.array(z.string()).optional(),
categories: z.array(z.string()),
featured: z.boolean().optional(),
collection: z.boolean().optional(),
includeHero: z.boolean().optional(),
}),
});
const work = defineCollection({
type: "content",
schema: z.object({
company: z.string(),
role: z.string(),
dateStart: z.coerce.date(),
dateEnd: z.union([z.coerce.date(), z.string()]),
article: z.string().url().optional(),
}),
});
const education = defineCollection({
type: "content",
schema: z.object({
institution: z.string(),
qualification: z.string(),
grades: z.array(z.string()),
dateStart: z.coerce.date(),
dateEnd: z.union([z.coerce.date(), z.string()]),
isOpen: z.boolean().optional(),
}),
});
const skills = defineCollection({
type: "content",
schema: z.object({
type: z.string(),
title: z.string(),
icon: z.string(),
}),
});
export const collections = { posts, projects, work, education, skills };

View file

@ -0,0 +1,11 @@
---
institution: "Kennicott Sixth Form"
qualification: "BTEC & A-level"
grades:
[
"Pearson BTEC Level 3 National Extended Diploma in Art and Design - Distinction Merit Merit (2020)",
"AQA GCE/A Computer Science ADV (Python) - C (2020)",
]
dateStart: "2018"
dateEnd: "2020"
---

View file

@ -0,0 +1,11 @@
---
institution: "King Edward VI Community College"
qualification: "GCSEs & Cambridge Nationals qualification"
grades:
[
"10 GCSEs including Maths and English (2018)",
"OCR Cambridge Nationals Creative iMedia Level 1/2 Award/Certificate - Merit at Level 2 (2016)",
]
dateStart: "2014"
dateEnd: "2018"
---

View file

@ -0,0 +1,11 @@
---
institution: "South Devon College"
qualification: "UAL Level 3 Extended Diploma in Creative Media Production and Technology"
grades:
[
"2nd year: Extended Diploma - Distinction (2022)",
"1st year: Diploma - Distinction (2021)",
]
dateStart: "2020"
dateEnd: "2022"
---

View file

@ -0,0 +1,12 @@
---
institution: "University Centre South Devon"
qualification: "FdA Games and Interactive Design"
grades:
[
"2nd year: 70.25% State Aggregate Mark (2024)",
"1st year: 69.43% State Aggregate Mark (2023)",
]
dateStart: "2022"
dateEnd: "2024"
isOpen: true
---

View file

@ -0,0 +1,7 @@
---
institution: "University of Plymouth"
qualification: "BA (Hons) Game Arts and Design"
grades: ["1st year: Uncommenced"]
dateStart: "2024"
dateEnd: "2025"
---

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View file

@ -0,0 +1,144 @@
---
title: "Libreboot on an X230"
date: 2024-01-07
updated: 2024-07-09
description: "An easy guide on how I flashed Libreboot onto my Lenovo Thinkpad X230, and later internally flashed an updated bios version."
image:
url: "flashing.avif"
alt: "Flashing the chips"
categories: ["personal"]
tags: ["linux", "libreboot", "raspberry pi", "thinkpad", "x230"]
---
This post is a simple guide on how I "Librebooted" my Lenovo Thinkpad X230. I struggled to find instructions which detailed the entire process for a beginner who has never used tools such as flashrom before. The examples I have given here are based on what I did personally. Whilst these are the exact steps I took, for you there may be other or completely different steps so please reference the [documentation](https://libreboot.org/docs/install/x230_external.html) before carrying out any steps listed here.
**If you are unsure of what size rom you require, you can find this out by reading the data from each chip and checking the resulting files.**
In my case I used a Raspberry Pi 3 Model B, a Pomona SOIC Clip 8 Pin, and a minimum of 6 female jumper wires.
![Flashing the chips](flashing.avif)
Before starting remember to remove the laptop's battery. Some guides state that you should also disconnect the CMOS battery however I didn't. When connecting and disconnecting the SOIC clip, ensure that the Pi is not connected to power to avoid damaging the chip.
## Preparing the rom
1. Download Libreboot's build system.
```sh
git clone https://codeberg.org/libreboot/lbmk
```
2. [Download](https://libreboot.org/download.html) the rom from Libreboot.
_stable > 20230625 (or the latest folder for you) > roms > libreboot-20230625_x230_12mb.tar.xz_
3. Extract the downloaded tar archive. Inside _bin > x230_12mb_ pick the correct rom for your keyboard layout and whether you want to use GRUB or SeaBIOS.
4. Run the below command **from inside** the lbmk directory and point it to the rom you chose above. Put your devices MAC address after the _-m_ switch as shown. Mine was printed on a sticker located inside the machine.
```sh
./vendor inject -r grub_x230_12mb_libgfxinit_corebootfb_ukqwerty.rom -b x230_12mb -m 00:f6:f0:40:71:fd
```
5. Split the rom for flashing onto the two chips.
```sh
dd if=grub_x230_12mb_libgfxinit_corebootfb_ukqwerty.rom of=top.rom bs=1M skip=8
dd if=grub_x230_12mb_libgfxinit_corebootfb_ukqwerty.rom of=bottom.rom bs=1M count=8
```
## Flashing
1. Read the top chip 2 or 3 times into separate files and compare the outcome using _diff_. This ensures that the data received has no discrepancies.
```sh
sudo flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=32768 -r factory_bios_top_01.rom -c "MX25L3206E/MX25L3208E" -V
```
2. Read bottom chip 2 or 3 times and again compare the outcome.
```sh
sudo flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=32768 -r factory_bios_bottom_01.rom -c "MX25L6406E/MX25L6408E" -V
```
3. Flash the top chip.
```sh
sudo flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=32768 -w top.rom -c "MX25L3206E/MX25L3208E" -V
```
4. Flash the bottom chip.
```sh
sudo flashrom -p linux_spi:dev=/dev/spidev0.0,spispeed=32768 -w bottom.rom -c "MX25L6406E/MX25L6408E" -V
```
### References
[Libreboot](https://libreboot.org/docs/install/x230_external.html), [Skulls](https://github.com/merge/skulls/blob/master/x230/README.md), [thinkpad-ec](https://github.com/hamishcoleman/thinkpad-ec/blob/master/docs/CONFIG.md), and [Harmonic Flow](https://www.harmonicflow.org/en/blog/2022/flashing-coreboot-on-a-lenovo-thinkpad-x230-with-a-raspberry-pi-tutorial).
## Internal flashing to update Libreboot
1. Find flash chip size.
```sh
flashprog -p internal
```
2. If flashprog tells you '/dev/mem mmap failed: Operation not permitted' then use the following command.
```sh
sudo modprobe -r lpc_ich
```
3. Install flashprog and optionally dmidecode from the AUR.
```sh
paru -S flashprog dmidecode
```
4. Read the current chip contents several times. To do this, run the same command changing the dump.bin filename.
```sh
sudo flashprog -p internal:laptop=force_I_want_a_brick,boardmismatch=force -r dump.bin
```
5. Clone Libreboot MaKe and change into the directory.
```sh
git clone https://codeberg.org/libreboot/lbmk; cd lbmk
```
6. Run the dependencies installer script. The content of which can be found in: `config/dependencies/arch`, if using Arch Linux for example.
```sh
sudo ./build dependencies arch
```
7. Manually install missing dependencies listed at the end of the script.
```sh
paru -S bdf-unifont ttf-unifont # ttf-unifont was meant to be unifont
```
8. Run the injection script to patch the release rom with the necessary vendor files.
```sh
./vendor inject -r seabios_withgrub_x230_12mb_libgfxinit_corebootfb_ukqwerty_grubfirst.rom -b x230_12mb -m 00:f6:f0:40:71:fd
```
9. Erase and rewrite the chip contents with the new rom.
```sh
sudo flashprog -p internal:laptop=force_I_want_a_brick,boardmismatch=force -w seabios_withgrub_x230_12mb_libgfxinit_corebootfb_ukqwerty_grubfirst.rom
```
10. Identify and clean-up installed dependencies.
```sh
paru -Qe
```
### References
[Flashprog FAQ](https://flashprog.org/wiki/FAQ), [Libreboot Build Dependencies](https://libreboot.org/docs/build/#first-install-build-dependencies), [Libreboot Internal Flashing](https://libreboot.org/docs/install/#run-flashprog-on-host-cpu).

View file

@ -0,0 +1,23 @@
---
title: "3D Package Design"
description: "3D Package Design inspired by Derek Elliott."
date: 2020-08-16
updated: 2020-08-16
image:
{ url: "troy-lusty-3d-package-design.avif", alt: "3D package design frame" }
tags: ["blender"]
categories: ["personal"]
---
import glowing_box_animation from "glowing-box-animation.webm";
3D Package Design inspired from [video](https://www.youtube.com/watch?v=4SRwODk0oOU) by Derek Elliott.
This was the final product from my first attempt at some simple animation within Blender done sometime in August of 2020.
<video preload="metadata" loop muted controls>
<source src={glowing_box_animation} type="video/webm" />
</video>
_Animation_
![3D package design frame](troy-lusty-3d-package-design.avif)

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.1 KiB

View file

@ -0,0 +1,66 @@
---
title: "A Long Way Down (Demo)"
description: "A Long Way Down is a short, atmospheric linear adventure created alongside my friend and teammate Sam as a project for our FdA Games and Interactive Design degree."
date: 2023-05-11
updated: 2023-05-11
featured: true
image: { url: "alwd-img1.avif", alt: "A Long Way Down Intro Showcase" }
tags: ["unreal engine", "blender", "inkscape"]
categories: ["education"]
includeHero: true
extraAuthors: ["Sam Griffiths"]
---
import alongwaydown_demo_walkthrough from "alongwaydown-demo-walkthrough.webm";
A Long Way Down is a short, atmospheric linear adventure created alongside my friend [Sam](https://samgriffiths.dev) as a project for our FdA Games and Interactive Design degree. It is the follow up project to our previous work: [Nightmare](/projects/nightmare). Currently the [demo](https://samandtroy.itch.io/alongwaydown) is available on Itch.io.
<video preload="metadata" controls>
<source src={alongwaydown_demo_walkthrough} type="video/webm" />
</video>
_Demo walkthrough_
![A Long Way Down Intro Showcase](alwd-img1.avif)
_Intro_
![A Long Way Down Forest Showcase](alwd-img2.avif)
_Forest_
![A Long Way Down Tree Bridge Showcase](alwd-img3.avif)
_Tree bridge_
![A Long Way Down Swamp Showcase](alwd-img4.avif)
_Swamp_
![A Long Way Down Final Climb](alwd-img5.avif)
_Final climb_
![A Long Way Down Cliff Jump](alwd-img6.avif)
_Cliff jump_
![Alternate night lighting idea](alwd-alternate-night-lighting.avif)
_Alternate night lighting idea_
![Old colour grade on forest section](alwd-early-forest.avif)
_Old colour grade on forest section_
![Early environment stage](alwd-early-environment-stage.avif)
_Early environment stage_
![Initial style experiments](alwd-style-experiment.avif)
_Initial style experiments_
### External links
[Itch.io page](https://samandtroy.itch.io/alongwaydown)

View file

@ -0,0 +1,23 @@
---
title: "Astronaut"
description: "Astronaut (Lighting and Camera Test)"
date: 2022-03-28
updated: 2022-03-28
image: { url: "troy-lusty-astronaut.avif", alt: "Astronaut final piece" }
tags: ["blender", "davinci resolve"]
categories: ["personal"]
---
Astronaut character lit with 1 area light using light nodes. Done to test lighting and the creation of a camera with an "anamorphic lens" inside of Blender. Final adjustments made within DaVinci Resolve including adding a lens dirt overlay by William Landgren.
![Astronaut final piece](troy-lusty-astronaut.avif)
_Astronaut Final Image_
### External links
[Domenico D&rsquo;Alisa&rsquo;s ArtStation](https://www.artstation.com/domenicodalisa)
[William Landgren&rsquo;s Instagram](https://www.instagram.com/landgrenwilliam)
[Astronaut asset](https://cubebrush.co/domenicodalisa/products/vsuspw/discovery-pay-what-you-want-2017)

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View file

@ -0,0 +1,61 @@
---
title: "Camouflage Store"
description: "Camouflage is a family run outdoor clothing and equipment business, which started in 2007. We also provide consultation to a major MOD Supplier. This includes product concept design and testing. With these partnerships we are able to provide the best possible products, designed, tested and proven."
#date: 2020-12-03T09:17:23+00:00 # Date of site creation
date: 2022-10-18 # Date Persuit theme was purchased
updated: 2024-12-05
image:
{
url: "camouflage-store-homepage.avif",
alt: "Camouflage Store homepage as of 2022",
}
tags: ["ecommerce", "shopify", "docker"]
categories: ["client work"]
---
My role has me in charge of managing an online ecommerce store in addition to creating, editing, and publishing informational YouTube and social media content for a family run outdoors store. This includes the redesign shown below but also any maintenance and general upkeep of the site and all related systems.
## YouTube content
As of 2024-12-05 the [YouTube channel](https://www.youtube.com/@camouflagestoreuk) has 1.37k subscribers and 312,241 views over a total of 168 videos. If were to pick one video that displays the quality of the content we produce, it would probably be [SOLO ATP SAS SMOCK MK2 (2022) OVERVIEW | Camouflage Store](https://www.youtube.com/watch?v=K7wlm60rXVs). I am incredibly grateful to Steve for giving me the opportunity to continue working with him, and for the amount of creative freedom he gives me when experimenting with new ideas.
![SOLO ATP SAS SMOCK MK2 (2022) OVERVIEW | Camouflage Store YouTube Video Thumbnail](camouflage-store-video-thumbnail.avif)
## Site redesign
Most recently I completed modernising the website which included moving it to Shopify from its previous CMS platform. This has resulted in the owner gaining more control over his business as he can now make changes to the site that would have previously required hiring a developer to do. Additionally, the new site is far more modern introducing benefits such as being mobile friendly, fast, and much more secure which will improve the experience for everyone.
![Camouflage Store homepage as of 2022](camouflage-store-homepage.avif)
_New design as of 2022_
The default border-radius of buttons was also unable to be changed within the theme so I used Shopify's custom CSS feature to override the default styling on all affected elements. This instantly makes the site look more unique compared to others using the same theme. Additionally, keywords have been added into the HTML head for better SEO using Liquid and a custom product metafeild.
```liquid
<meta name="keywords" content="camouflage store, camo, outdoors, devon, uk, ..., {{ product.metafields.custom.keywords }}">
```
Whilst making these modifications to the theme, I found two bugs. Initially with the variant selection options on product pages which I was able to diagnose and fix in communication with the original theme developers. The change was then included within the next update. And lastly, an issue with pages locking up and crashing the entire browser tab or application. According to the developers this was due to the JavaScript in the theme having quotes within option names.
Here's a look at the prior site as it was the day we switched over to using the new redesign.
![Camouflage Store Previous Design](camouflage-store-previous.avif)
_Previous design_
## Branding
Along with the switch of platform, we came to the decision that the domain and overall branding would need to be updated to to go along with the rest of the work being done. I felt it was important however that the original red colour of `#dd3e3e` was kept as it was a key part of the brand from all the way back in 2007.
For the domain, we have gone with [camouflagestore.uk](https://camouflagestore.uk) (and its equavalent .co.uk tld). This was chosen as the location of the store is a key factor in its identity, and having this represented from the geto go meant a lot to the client. The legacy domain of [camouflage-store.com](https://camouflage-store.com) has also been kept since it has also been with Steve since 2007 and holds significant personal value.
## VPS
Continuing my goal of giving Steve the most amount of freedom possible without having to rely on thirdparty services, I have setup a VPS on his behalf to host a variety of services.
The first of which is an instance of [Umami](https://umami.is/), a self-hostable analytics platform. This has been hosted using Docker and includes automatic redeployments using Watchtower, and reverse proxying with Traefik.
### Other links
- [Camouflage Store](https://camouflagestore.uk)
- [YouTube](https://www.youtube.com/@camouflagestoreuk)
- [Instagram](https://www.instagram.com/camouflagestoreuk)
- [Twitter](https://twitter.com/camouflagestore)

View file

@ -0,0 +1,53 @@
---
title: "Digital Artefact: Corridor (Incomplete)"
description: "A virtual production horror environment made in Unreal Engine 5 and inspired by The Shining."
date: 2023-01-20
updated: 2023-01-20
image:
{
url: "troy-lusty-highresscreenshot05012023-2.avif",
alt: "Progress 5 for Digital Artefact: Corridor project",
}
tags: ["unreal engine", "blender", "davinci resolve", "photoshop"]
categories: ["education"]
includeHero: true
---
import deltakey from "deltakey.webm";
import wallpaperpeel from "wallpaperpeel.webm";
The outcome I went into this project expecting was that I would produce an environment made entirely from scratch which I could create a short test virtual production shot in utilising a motion capture camera rig and live keying. Later I would then properly composite the two bits of footage together.
**This project is presented here in the state it was upon the university deadline. There were a couple issues that occurred towards the end of production which is why the project is listed as incomplete.**
![Progress 5 for Digital Artefact: Corridor project](troy-lusty-highresscreenshot05012023-2.avif)
_Using Lumen for global illumination._
![Progress 4 for Digital Artefact: Corridor project](troy-lusty-highresscreenshot05012023-1.avif)
_Set the project to use deprecated hardware raytracing instead of Lumen, which resulted in the light spill on the walls being fixed._
![Progress 3 for Digital Artefact: Corridor project](troy-lusty-highresscreenshot00001-squeeze.avif)
_First steps of migrating the scene over to Unreal Engine. Focusing on recreating the lights from Blender into Lumen. I am having issues softening up the shadows being cast from the light shade and wall mounting._
![Progress 2 for Digital Artefact: Corridor project](troy-lusty-hall-1205-2.avif)
_Modelled a new scene design by creating repeatable assets in Blender and utilising collection instancing._
![Progress 1 for Digital Artefact: Corridor project](troy-lusty-troy-lusty-output.avif)
_Initial idea made and presented in Blender for the project pitch._
<video preload="metadata" loop muted controls>
<source src={deltakey} type="video/webm" />
</video>
_Virtual production DaVinci Resolve delta key_
<video preload="metadata" loop muted controls>
<source src={wallpaperpeel} type="video/webm" />
</video>
_Wallpaper peel test_

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -0,0 +1,15 @@
---
title: "Discord Bot"
description: "AQA Computer Science NEA project based around creating a Discord bot."
date: 2020-03-31
updated: 2020-03-31
image: { url: "discord.avif", alt: "Discord bot" }
tags: ["python"]
categories: ["education"]
---
The objective I set myself was to write a Discord bot as my AQA Computer Science NEA Project. The program utilised [discord.py](https://github.com/Rapptz/discord.py), a Discord API wrapper for use within Python. The resulting code for the bot can be viewed in my Git repo.
### External links
https://github.com/troylusty/discordbot

Binary file not shown.

View file

@ -0,0 +1,28 @@
---
title: "Firespline"
description: "A fire animation test presented in a small cave scene."
date: 2022-01-06
updated: 2022-01-06
image: { url: "troy-lusty-firespline.avif", alt: "Firespline frame" }
tags: ["blender", "davinci resolve"]
categories: ["personal"]
---
import firespline from "firespline.webm";
Cycles and DaVinci Resolve (with assets from Blend Swap and ambientCG)
This is fire animation test I did which I turned into a scene complete with reflected light on water and volumetrics.
<video preload="metadata" loop muted controls>
<source src={firespline} type="video/webm" />
</video>
_Animation_
![Firespline frame](troy-lusty-firespline.avif)
_Extracted frame_
### Assets list
https://www.blendswap.com/blend/26395, https://ambientcg.com/view?id=Rock030, https://ambientcg.com/view?id=Ground033

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

View file

@ -0,0 +1,42 @@
---
title: "Kikimora"
description: "A narrative driven horror game prototype done as a university project."
date: 2024-01-24
image: { url: "kikimora-titlecard.avif", alt: "Kikimora titlecard" }
tags: ["godot", "blender", "gimp", "inkscape"]
categories: ["education"]
---
import kikimora_gameplay from "kikimora-gameplay.webm";
## A narrative driven horror prototype done as a university project
This was my first attempt at making anything within the Godot game engine, and was consequently what resulted in me starting the creation of [MUST FIND BEANS](https://store.steampowered.com/app/3012740/MUST_FIND_BEANS/).
### Controls
WASD - Movement
CTRL - Crouch
E - Interact
Mouse - Look around
<video preload="metadata" controls>
<source src={kikimora_gameplay} type="video/webm" />
</video>
_Short gameplay video_
![Kikimora hallway screenshot](kikimora-ingame-screenshot-1.avif)
_Screenshot 1_
![Kikimora red hallway screenshot](kikimora-ingame-screenshot-2.avif)
_Screenshot 2_
### External links
[Itch.io page](https://troylusty.itch.io/kikimora)

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

View file

@ -0,0 +1,51 @@
---
title: "Kraken in the Cupboard"
description: "Mythical depiction of the Kraken bursting its way out of a bookcase cupboard."
date: 2021-12-11
updated: 2021-12-11
image: { url: "troy-lusty-kraken.avif", alt: "Kraken in the Cupboard final" }
tags: ["blender"]
categories: ["personal"]
includeHero: true
---
Rendered using Cycles X, with all compositing done inside of Blender.
I originally began making this to see how closely I could recreate my own dining room, but later decided that it could be pushed further and developed into a full scene by adding in some more elements. Created with some CC0 assets from ambientcg, polyhaven, blendswap, unsplash, and avopix.
_Approximate time taken: 28/11/2021 - 11/12/2021_
![Final](troy-lusty-kraken.avif)
_Final_
![Alternate idea](troy-lusty-kraken-alternate.avif)
_Alternate idea_
![Early progress](troy-lusty-kraken-early.avif)
_Early progress_
![Main reference images](troy-lusty-kraken-reference.avif)
_Main reference images_
### Assets list
[Wood Floor 017 texture](https://ambientcg.com/view?id=WoodFloor017), [Wood 049 texture](https://ambientcg.com/view?id=Wood049), [Antique Ceramic Vase 01 model](https://polyhaven.com/a/antique_ceramic_vase_01), [Decorative Book Set 01 model](https://polyhaven.com/a/decorative_book_set_01), https://polyhaven.com/a/mantel_clock_01
https://polyhaven.com/a/WoodenTable_01
https://polyhaven.com/a/tea_set_01
https://polyhaven.com/a/Television_01
https://polyhaven.com/a/ceramic_vase_01
https://ambientcg.com/view?id=PaintedPlaster017
https://polyhaven.com/a/dining_chair_02
https://polyhaven.com/a/standing_picture_frame_02
https://unsplash.com/photos/Bin0C2RtQpI
https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcSDQNk0oHUX1hpzBAGuEuCkmWvPDxbH6MNZdQ&usqp=CAU
https://blendswap.com/blend/7571
https://ambientcg.com/view?id=PaintedPlaster015
https://ambientcg.com/view?id=SurfaceImperfections013
https://avopix.com/photo/59076-35mm-film-grain-texture
https://polyhaven.com/a/Lantern_01
https://www.blendswap.com/blend/25903
https://polyhaven.com/a/horse_statue_01

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

View file

@ -0,0 +1,21 @@
---
title: "Logofolio"
description: "An ongoing collection of branding and logos designs."
date: 2021-06-16
updated: 2021-06-16
image: { url: "troy-lusty-logofolio.avif", alt: "Logofolio title" }
collection: true
featured: true
tags: ["blender", "pixelmator", "affinity photo", "affinity designer"]
categories: ["client work"]
---
An ongoing collection of branding and logos designs. Including both 2D and 3D works created inside of various softwares and packages.
Layout inspired by: [citrus.works](https://citrus.works/)
![Logofolio title](troy-lusty-logofolio.avif)
![Header design for @_railz_](troy-lusty-logofolio-railz.avif)
Twitter header and rebrand for [railz](https://twitter.com/@_railz_). Inspired by: [Cloakzy- concept broadcast asset redesign](https://www.behance.net/gallery/100498021/Cloakzy-Concept-Broadcast-Assets)

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

View file

@ -0,0 +1,22 @@
---
title: "Megascans Artworks"
description: "A small collection of artworks made with Megascans assets."
date: 2021-01-29
updated: 2021-01-29
collection: true
image: { url: "troy-lusty-forest-fire.avif", alt: "Forest fire" }
tags: ["quixel megascans", "blender"]
categories: ["personal"]
---
![Forest fire](troy-lusty-forest-fire.avif)
_Forest fire_
![Little Nightmares](troy-lusty-little-nightmares.avif)
_Little Nightmares_
![Crypt](troy-lusty-crypt.avif)
_Crypt_

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 117 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

View file

@ -0,0 +1,54 @@
---
title: "Mortis"
description: "1 Corinthians 15:26 - The last enemy to be destroyed is death."
date: 2022-12-10
updated: 2022-12-10
image:
{
url: "troy-lusty-mortis.avif",
alt: "Final finished artwork for Mortis project",
}
featured: true
tags: ["blender", "davinci resolve"]
categories: ["personal"]
includeHero: true
---
> 1 Corinthians 15:26 - The last enemy to be destroyed is death.
![Final finished artwork for Mortis project](troy-lusty-mortis.avif)
_Final_
![Progress 3 for Mortis project](troy-lusty-mortis-progress-3.avif)
_Progress 3_
![Progress 2 for Mortis project](troy-lusty-mortis-progress-2.avif)
_Progress 2_
![Progress 1 for Mortis project](troy-lusty-mortis-progress-1.avif)
_Progress 1_
### Assets list
- **Three D Scans**
- [Le Transi de Rene de Chalon](https://threedscans.com/musee-des-monuments-francais/le-transi-de-rene-de-chalon)
- [Font Reconstructed](https://threedscans.com/lincoln/reconstructed/)
- [Saint Hugh](https://threedscans.com/lincoln/saint-hughs/)
- [Zenobia in Chains](https://threedscans.com/saint-louis-art-museum/zenobia-in-chains/)
- **Unsplash**
- [blue red and yellow floral glass window](https://unsplash.com/photos/YEXaj7mNiCQ)
- **Textures.com**
- [Arcaded Wood Panels - PBR0716](https://www.textures.com/download/PBR0959/140830)
- [Scratches Overlay - OVL0021](https://www.textures.com/download/Overlays0025/136531)
- [Stains 7 Overlay - OVL0040](https://www.textures.com/download/Overlays0041/137435)
- [Waterplants0017](https://www.textures.com/download/Waterplants0017/14022)
- [TombHeadstone0241](https://www.textures.com/download/TombHeadstone0241/130539)
- **PolyHaven**
- [Concrete Floor 02](https://polyhaven.com/a/concrete_floor_02)
- [Large Grey Tiles](https://polyhaven.com/a/large_grey_tiles)
- **Pexels**
- [Free stock photo of 35mm, grain, texture](https://www.pexels.com/photo/35mm-film-grain-texture-246213/)

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

View file

@ -0,0 +1,38 @@
---
title: "Nightmare"
description: "Little Nightmares inspired game demo and environment completed for my college final major project."
date: 2021-04-21
updated: 2021-04-21
image: { url: "troy-lusty-nightmare.avif", alt: "Nightmare Frame 0600" }
tags: ["unreal engine", "blender", "davinci resolve", "photoshop", "zbrush"]
categories: ["education"]
extraAuthors: ["Sam Griffiths"]
---
import nightmare from "nightmare.webm";
This is the environment I created in collaboration with Sam Griffiths for our Unit 8 - Developing a Creative Media Production Project - Final Major Project. I was in charge of the art side of the project including asset production, composition, and lighting although we both helped one another out when necessary with blueprints etc. Additionally, I created this short cinematic in Unreal Engine's cinematic level sequencer by keyframing the transform values and focus distance of a camera.
_IMPORTANT: I would just like to add that since we were taking heavy inspiration from both Little Nightmares and INSIDE, combined with the relatively short time window we had to create the playable demo in, we decided to take the main character model and player animations from Little Nightmares and put them into our project. This allowed for us to much more easily create the environment around the character's scale emphasising their small size in comparison to the surroundings._
<video preload="metadata" muted controls>
<source src={nightmare} type="video/webm" />
</video>
_Environment cinematic_
![Frame 0600](troy-lusty-nightmare.avif)
_Frame 0600_
![Frame 1182](troy-lusty-nightmare-frame-1182.avif)
_Frame 1182_
![Frame 1700](troy-lusty-nightmare-frame-1700.avif)
_Frame 1700_
### External links
[Sam's ArtStation post](https://www.artstation.com/artwork/rA1yyE)

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

View file

@ -0,0 +1,22 @@
---
title: "Pasikdhar"
description: "Depiction of the staircase in my home being haunted by a night terror."
date: 2023-07-25
updated: 2023-07-25
image:
{
url: "troy-lusty-pasikdhar-final.avif",
alt: "Final piece of Pasikdhar project",
}
categories: ["personal"]
tags: ["blender", "davinci resolve", "gimp", "inkscape", "krita"]
includeHero: true
---
![Final piece of Pasikdhar project](troy-lusty-pasikdhar-final.avif)
_Final_
![Initial progress for Pasikdhar project](troy-lusty-pasikdhar-progress.avif)
_Initial progress_

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View file

@ -0,0 +1,72 @@
---
title: "Sinkie Soldiers"
description: "Keep control of the castle, but more importantly: your armour."
date: 2024-03-15
updated: 2024-12-12
image: { url: "sinkie-soldiers.avif", alt: "Sinkie Soldiers Logo" }
categories: ["personal"]
tags: ["unreal engine", "blender", "gimp", "fl studio"]
extraAuthors: ["Sam Griffiths"]
---
**This project was previously only a game jam submission but very soon it will be polished up and published onto [Steam](https://store.steampowered.com/app/3368860/Sinkie_Soldiers)!**
If you're interested in looking at our original [submission](https://troylusty.itch.io/sinkie-soldiers), it was done as a part of the [Ukie Student Game Jam 2024](https://itch.io/jam/ukie-student-game-jam-2024), in which the team consisted of myself and [Sam Griffiths](https://samgriffiths.dev). The jam ran for one day from 14 Mar 2024 9:00 AM to 15 Mar 2024 5:00 PM.
![Sinkie Soldiers Logo](sinkie-soldiers.avif)
## Keep control of the castle, but more importantly: your armour.
Sinkie Soldiers is a local co-op versus game in which you battle against your friends for control of the castle! Your goal is to break down the integrity of your enemy's armour and finish them off to claim the victory.
The game is located on a kids bouncy castle play area and is based around what they might be imagining whilst playing there.
![Sinkie Soldiers Characters](sinkie-soldiers-characters.avif)
![Sinkie Soldiers Environment](sinkie-soldiers-environment.avif)
![Sinkie Soldiers Playtest](sinkie-soldiers-playtest.avif)
### Rules
- First to reach 3 rounds wins
- Win a round by either:
- Removing all the other players armour and eliminating them
- Making the enemy player fall into the water below the arena
- There are pickups and random level modifiers included. Currently these are:
- The Halo - One additional hit point
- Slippery floor
- Low gravity
- Obstacle overdrive
### Controls
It is recommended to use 2 controllers.
- Movement - Left thumbstick
- Camera - Right thumbstick
- Jump - Bottom face button
- Attack - Right trigger
#### In menus
- Play - Bottom face button
- Quit - Right face button
#### Keyboard
- If playing on keyboard, WASD to move, Mouse to look around, and Left Mouse Click to Attack and select menu items.
### Third-party assets list
- [Animated Characters 2](https://kenney.nl/assets/animated-characters-2)
- [Bossy Enemy Animation Pack](https://www.unrealengine.com/marketplace/en-US/product/bossy-enemy-animation-pack)
- [Knicknack font](https://www.myfonts.com/collections/knicknack-font-great-scott)
- [Evil Empire font](https://www.dafont.com/evil-empire.font)
- [Punch Your Way Through MIDI](https://opengameart.org/content/punch-your-way-through)
- [man in red shorts standing near green plant stock photo](https://unsplash.com/photos/man-in-red-shorts-standing-near-green-plant-A0VqdVOv6c4)
- [Plastic 010 (the roughness map)](https://ambientcg.com/view?id=Plastic010)
### External links
[Jupi Plays Indie Games: ALL THE GAMES [Ukie Student Game Jam] [Part 3]](https://youtu.be/Jyz5dkrrdVI?feature=shared&t=315)

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

View file

@ -0,0 +1,55 @@
---
title: "Sixth Form Artworks"
description: "Assorted artwork completed in my time at sixth form."
date: 2020-02-21
updated: 2020-02-21
collection: true
image:
{
url: "troy-lusty-sixth-form-king-street.avif",
alt: "Sixth Form Artwork King Street",
}
tags: ["photoshop", "after effects"]
categories: ["education"]
---
import climate_emergency_exhibition from "climate-emergency-exhibition.webm";
import misty_forest_layers from "misty-forest-layers.webm";
Some artwork created whilst I was at Sixth Form. The "Misty Forest" photobashed environment was made as part of an entry requirement onto a university course.
<video preload="metadata" loop muted controls>
<source src={climate_emergency_exhibition} type="video/webm" />
</video>
_Climate Emergency Exhibition Main Video_
![Climate emergency exhibition](troy-lusty-sixth-form-climate-emergency-exhibition.avif)
_Climate Emergency Exhibition Main Artwork_
Assets: [unsplash.com/photos/Ikyeu274Zxc](https://unsplash.com/photos/Ikyeu274Zxc), [unsplash.com/photos/2t60-JYQ5pk](https://unsplash.com/photos/2t60-JYQ5pk), [unsplash.com/photos/z_MlmEelJpE](https://unsplash.com/photos/z_MlmEelJpE).
![King Street](troy-lusty-sixth-form-king-street.avif)
_King Street Main Artwork_
![Misty forest](troy-lusty-sixth-form-inside-outside.avif)
_Misty Forest Final image_
<video preload="metadata" loop muted controls>
<source src={misty_forest_layers} type="video/webm" />
</video>
_Misty Forest stages video_
Assets: [pexels.com/photo/trees-1093184](https://www.pexels.com/photo/trees-1093184) with other images from Pexels and Unsplash.
### External links
[@DartingtonArts - Climate Emergency exhibition](https://twitter.com/DartingtonArts/status/1231920186409857024?s=20)
[@DartingtonTrust - New exhibition at #DartigntonHall](https://twitter.com/DartingtonTrust/status/1230514488471957504?s=20)
[@KEVICC - Our students art on the #ClimateEmergency](https://twitter.com/KEVICC/status/1230014789176393728?s=20)

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

View file

@ -0,0 +1,160 @@
---
title: "Smaller personal projects"
description: "A collection of smaller personal projects."
date: 2023-10-12
updated: 2023-11-23
collection: true
featured: true
image:
{ url: "troy-lusty-personal-23-11-2023.avif", alt: "Marble statue render" }
categories: ["personal"]
tags:
["blender", "photoshop", "affinity photo", "davinci resolve", "unreal engine"]
includeHero: true
---
import interior_test from "interior_test.webm";
import cinematic_lighting_in_blender from "cinematic-lighting-in-blender-night-lighting-03-projection.webm";
import abstract_chrome_loop from "abstract-chrome-loop.webm";
import houdini_pillows from "houdini-pillows.webm";
import houdini_abstract_particles from "houdini-abstract-particles.webm";
import houdini_fabric_hoses from "houdini-fabric-hoses.webm";
import plastic_bag_exhibition_test from "plastic-bag-exhibition-test.webm";
import krampus_unrealengine4_learning from "krampus-unrealengine4-learning.webm";
import playstation_motion_graphics_loop from "playstation-motion-graphics-loop.webm";
This is an ongoing collection of smaller personal project artwork renders that I have created in my free time using Blender. I am constantly updating this collection. **Started 26th Feb 2021.**
![2023-11-23](troy-lusty-personal-23-11-2023.avif)
_23-11-2023 Cycles with AgX. [3D model](https://www.myminifactory.com/object/3d-print-ugolino-and-his-sons-268545) and [Marble textures](https://www.textures.com/download/PBR0494/138505)_
![2023-11-02](troy-lusty-personal-02-11-2023.avif)
_02-11-2023 Cycles._
![12-10-2023](troy-lusty-personal-12-10-2023.avif)
_12-10-2023 Cycles. [Unsplash](https://unsplash.com/photos/79RV1Tnnrc0)_
<video preload="metadata" loop muted controls>
<source src={interior_test} type="video/webm" />
</video>
_19-07-2023 Cycles_
<video preload="metadata" loop muted controls>
<source src={cinematic_lighting_in_blender} type="video/webm" />
</video>
_08-04-2023 Cycles - Watch [Night Lighting 03](https://www.blendermarket.com/products/cinematic-lighting-in-blender). [Sony TC-510-2 Tape Recorder - by Dolgov](https://sketchfab.com/3d-models/sony-tc-510-2-tape-recorder-32acbe50ba0f4abc99af88e0d76f28f9)_
![18-04-2023](troy-lusty-personal-18-04-2023.avif)
_18-04-2023 Cycles_
<video preload="metadata" loop muted controls>
<source src={abstract_chrome_loop} type="video/webm" />
</video>
_06-04-2022 Eevee and DaVinci Resolve_
<video preload="metadata" loop muted controls>
<source src={houdini_pillows} type="video/webm" />
</video>
_08-02-2023 Houdini and Cycles_
<video preload="metadata" loop muted controls>
<source src={houdini_abstract_particles} type="video/webm" />
</video>
_UNSURE Houdini and Cycles_
<video preload="metadata" loop muted controls>
<source src={houdini_fabric_hoses} type="video/webm" />
</video>
_UNSURE Houdini and Cycles_
<video preload="metadata" loop muted controls>
<source src={plastic_bag_exhibition_test} type="video/webm" />
</video>
_UNSURE Cycles_
![27-12-2022](troy-lusty-personal-27-12-2022.avif)
_27-12-2022 Cycles_
![30-10-2022](troy-lusty-personal-30-10-2022.avif)
_30-10-2022 Cycles X (https://www.textures.com/download/PBR0821/139423 and engin-akyurt-9mIV0FR9uzo-unsplash)_
![06-10-2022](troy-lusty-personal-06-10-2022.avif)
_06-10-2022 Cycles X (https://avopix.com/photo/59076-35mm-film-grain-texture)_
![26-09-2022](troy-lusty-personal-26-09-2022.avif)
_26-09-2022 Cycles X Inspired by the work of Wes Cockx: https://cream3d.com_
![17-05-2022](troy-lusty-personal-17-05-2022.avif)
<video preload="metadata" loop muted controls>
<source src={krampus_unrealengine4_learning} type="video/webm" />
</video>
_UNSURE Unreal Engine 4_
_17-05-2022 Cycles X (https://avopix.com/photo/59076-35mm-film-grain-texture)_
![27-03-2022](troy-lusty-personal-27-03-2022.avif)
_27-03-2022 Cycles X (https://unsplash.com/photos/T-SDVHQUcgc, https://polyhaven.com/a/cobblestone_05, https://polyhaven.com/a/castle_brick_07)_
![21-02-2022](troy-lusty-personal-21-02-2022.avif)
_21-02-2022 Cycles X ([Rocks](https://www.blenderkit.com/asset-gallery?search_text=rock&query=category_subtree%3Alandscape%2Bis_free%3Atrue+order%3A_score), [Film grain texture](https://avopix.com/photo/59076-35mm-film-grain-texture), and [Moon texture](https://svs.gsfc.nasa.gov/4720))_
![15-01-2022](troy-lusty-personal-15-01-2022.avif)
_15-01-2022 Cycles X (with assets from https://ambientcg.com and https://blendswap.com/blend/20990)_
<video preload="metadata" loop muted controls>
<source src={playstation_motion_graphics_loop} type="video/webm" />
</video>
_17-09-2021 Eevee_
![10-07-2021](troy-lusty-personal-10-07-2021.avif)
_10-07-2021 Cycles and Affinity Photo (with assets from Chocofur)_
![16-05-2021](troy-lusty-personal-16-05-2021.avif)
_16-05-2021 Cycles and Affinity Photo_
![17-04-2021](troy-lusty-personal-17-04-2021.avif)
_17-04-2021 Cycles and Photoshop_
![16-03-2021](troy-lusty-personal-16-03-2021.avif)
_16-03-2021 (Updated on 21-03-2021) Cycles and Photoshop Inspired by: https://www.artstation.com/artwork/dONbew_
![25-02-2021](troy-lusty-personal-25-02-2021.avif)
_25-02-2021 (Updated on 17-03-2021) Cycles and Photoshop (with assets from Ian Hubert, Sketchfab and Graswald) https://sketchfab.com/3d-models/ehrengrab-rudolf-von-alt-8ec85f8c2b73443d9f7da539b79fdf42_
![23-01-2021](troy-lusty-personal-23-01-2021.avif)
_23-01-2021 (Fixed 12-01-2022) Eevee and Photoshop (with an asset from Sketchfab) https://sketchfab.com/3d-models/fiaker-denkmal-9b919637405e4e31af2e652a5f6ceb41_
![20-01-2021](troy-lusty-personal-20-01-2021.avif)
_20-01-2021 Cycles_
![15-01-2021](troy-lusty-personal-15-01-2021.avif)
_15/01/2021 Cycles_

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

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