My *initial* thoughts on ChatGPT

Article / 06 December 2022

Hello friends,

I know it's been a while since any activity in here. Fret not, I'm doing good and I hope you all are too in these crazy times. This last year has been one of self-improvement & exploration, which meant that art sadly took a back seat in many occasions. I'm slowly figuring things out and I'll be back on personal art soon enough! Some of you might have noticed that I deleted my Twitter account, in reaction to the unethical way the new management has handled things and its employees. Thus from now on I'll be focusing my attention on more frequent blogposts here and maybe on Linkedin. Feel free to connect with me there as well if you want to keep in touch.

Disclaimer

In this blog post I want to note down a couple of my initial thoughts on the latest AI thingy called ChatGPT. The TL DR version is that it is both amazing and scary to say the least. This is not yet another image generation tool that will replace our jobs tomorrow but still, I cannot help but wonder at its potential to change a much wider range of industries for better or worse. Impactful is certainly the word I'd use to describe it. Of course it's still early days and I haven't had the chance to mess around with it for more than a day or two, so please take everything I mention here with a huge grain of salt! Do your own research and try the tool for yourself, to get a better understanding of how it works and what its (current) limitations are. Also keep in mind that I'm not promoting the tool in any kind of way, I'm simply exploring how we can utilise the tool as artists to enhance our craft.

Initial tests

The tool came to my attention after some friends mentioned that it is apparently good at writing code. In order to properly test it, I head out to create a simple Maya script. After a solid 5 minutes and with no previous knowledge of MEL, I managed to get something working. Mind you this was a super simple task and I I couldn't do the same for Blender in that specific case (was getting errors, probably due to API changes in the last year or so). Still, I feel like the screenshot below showcases the tool's power. It can quickly generate code, comment it, explain what everything does and how it works and I can definitely see it as a great educational tool by that fact alone!

What's even crazier is that you can continue the conversation and ask it to make updates to the existing code, inform it on errors that your script editor might throw and give it feedback on how improve the code. I might not be the best person to judge it in its code efficiency, style or if some things work or not, but the fact that it even is to that level already is both scary and revolutionary in my eyes. I've tested "AI" chatbots in the past but they have always been fairly easy to confuse and quickly end up with a mess of a result, so this really looks like a proper AI companion that actually understands what you ask it to do and has the ability to iterate on its answer. I cannot wonder but feel like we're getting very close to an actual Tony Stark - Jarvis moment, I certainly feel like that every time I chat with the AI. Imagine how better it will be in 1, 2, 5-years' time!

Stress-testing it

While playing around with simple Maya scripts, I wondered if it could write shaders for Unity, Unreal etc. Turns out it actually can! I tried some Shadertoy code with a friend and that worked surprisingly well. Next up we tried a simple Unity shader and even asked it to write a custom Kuwahara post process filter in Unreal. That turned out to give me lots of errors and I'm not tech-y enough to fix them but the base algorythm code looked correct, so I'm sure any Tech artist would actually be able to set it up properly and get it working.

What I want to stress out is that this tool isn't panacea, you still need to be knowledgeable in your area of interest and adjust what the AI gives you to fit it to your needs. It still feels like it missed the last 10% of polish and accuracy in its answers for me to call it perfect. Nevertheless I feel like, it can already be a huge help to anyone. Be careful though! The tool will be 100% confident that whatever it tells you is the absolute truth and certainly right. In many situations the AI might give you complete bs but it'll still be absolutely certain that it gave you the correct answer! That's where your skillset and proficiency comes to play, to filter out the good from the bad answers.

AI's role as a brainstorming partner?

While I was looking out of my train's window the other day, I stumbled across an abandoned kart circuit and thought that this would be a nice environment idea that hasn't really been explored much in the env art community. Just to test the AI out a bit more, I gave that idea of mine a go, asking the AI for potential theme/moods and what props I should include. I encourage you to read its answers below and let you be the judge of that...

Throughout the whole conversation the AI gave me excellent suggestions that helped speed up the initial environment research process and gave me lots of ideas that I might not necessarily have thought. Some of the answers it gave me were pretty generic and predictable of course (who would have thought an overgrown & abandonded place would have overgrown vegetation and abandoned human props, right?), but I'm sure I could ask it to pump out extra ideas and it felt like there was definitely room to push it further! I cannot wait to continue the thread and see how far I can go with that brainstorming mindset.

Final thoughts

The reason of writing this blog post was to mainly spark a conversation on how we can use this tool in our creative process. We need to be part of the conversation as artists, understand how these tools are developed and provide both feedback and critique to their creators. I'm not aware how exactly this specific AI model has sourced its data and I will most definitely not be condoning its use if I later find out that OpenAI used similar unethical training data collection techniques as Midjourney & Stable Diffusion. You can read more on OpenAI's latest blog post. If you've got any extra resources on the subject, please do so in a comment. I'd love to hear more inputs on this subject!

Till next time,
*flies away*

Our 2021 Epic Megajam submission | Tech Breakdown

Making Of / 06 September 2021

Joining the 2021 Epic Megajam

Hey there travel.. readers!

Another year has passed, another Epic Megajam has happened! This year's theme was "Running out of space" and we made a game based on the literal meaning of it. Bomb - o - Mastoras is a fast-paced, local multiplayer arena brawler, where up to 4 players can compete against each other in order to decide who's the last ghost standing. I feel like I'm starting to repeat myself here, but this game jam was an amazing learning experience, and this is the blog post where I tell you all about it! So without further ado, let's get into the juicy stuff!

NVisionary Environments

Participating in the NVisionary Environments special category was an amazing excus... I mean opportunity to test all those fancy raytracing features in a semi-production environment. We wanted the best visual fidelity possible but at a reasonable performance cost. In the end we ended up utilizing RTGI (Global Illumination), RTAO (Ambient Occlusion) & RT Shadows. Lastly, we opted out of using RT Reflections, due to their limited visual impact in our specific case. Having a fully dynamic direct & indirect lighting setup gave us the flexibility to iterate a lot on the look of the game and we tried to implement as much dynamic environmental elements as possible. Some examples of that are the randomly-generated, lways-floating islands in the background, as well as the constantly-rotating sky light. 

Raytracing & WPO

Using WPO with Raytracing was a tricky one. I had to go through some fairly hidden CVARs in order to make it raytracing work with WPO meshes (actually blueprints in that case). I'm not sure if this was a raytracing limitation before, but we used the latest UE4.27 just to make sure that we have the latest features and the best possible performance in terms of raytracing. In any case, these are the two console commands that you need to change in order to have raytracing evaluate meshes that have WPO:

r.RayTracing.Geometry.StaticMeshes.WPO 1//This enables WPO evaluation in all static meshes. This can also be done on a per-actor level if you don't want to enable it globally.
r.RayTracing.Geometry.StaticMeshes.WPO.Culling 0//This disables the Culling of WPO meshes. Defaults to 1, presumably for performance reasons.

Lightweight, stylized clouds

Everyone knows that you can't have a floating island complex without fluffy, soft clouds to fill in the sky. These clouds were one of the first things that I wanted to tackle in this game jam and I really love the flexibility that the material properties give me. 

And here's how the master material looks. For extra performance gains, I used the Additive Blend Mode, an Unlit shading model, enabled Two Sided shading and disabled an Raytraced shadowing & decal response to this material. This allowed me to use the material  without any heavy performance impact, even when applied in fairly high-density meshes such as my smoothed-cube clouds. Lastly, as you can also see in the video above, I set up some LODs for the cloud meshes, in order to further optimize them in great distances.

Cloth physics

Having a secondary cloth simulation was not part of the initial roadmap but at some point we realized that it would give an extra sense of fluidity to our ghost characters. Thankfully, Unreal has a really solid and straightforward way to paint out the affected cloth areas and tweak a few settings to get accurate, game-ready cloth physics. In the video below, you can see how big of a difference it makes!

Camera Shakes

If you know me, you know that I always have a soft spot for subtle camera shakes. Camera shakes are one of the easiest and most effective tools in your arsenal to make any game alive and dynamic! In this game, we utilized a layered approach of two MatineeCameraShake classes (I hope that's the technical term) in our camera blueprint. The first is responsible for the subtle, base camera shake that is effective at all times and the second one is a more intense, snappy camera shake that is triggered only when a bomb explodes in the arena. 

And with that said, try not to overdo it! That's also a note to myself. I may have had too much fun with camera shakes in this jam...

That's all for now folks! Stay tuned for an update on my next collaboration project with Pat and Greg soon-ish!

Later days!


Breakfast Jam | Tech Breakdown

Making Of / 06 August 2021

Intro

Hey there! A couple of weeks ago, I uploaded my collaboration with Pat & Grigoris,  where I was responsible of the Unreal side of things. This included things like shaders, lighting, post process and rendering the final shots. This blog post will be a quick tech breakdown of the few noteworthy bits that I'd like to share with you.

You can see the final renders here!


Pat's original, extremely chonky & yummy concept

Final Render


RTX Everything

Having recently bought an RTX card, this small-scale diorama scene was a perfect opportunity to dip my toes into the raytracing world. I decided to go full-in and I can officially say that I cannot look back now. This scene utilizes raytracing in all of its aspects, from shadows, reflections and even translucency & Global Illumination. All these rays quickly bring up serious performance implications but enabling Nvidia's DLSS and fine-tuning the samples per pixel settings helped quite a lot. Below you can see the raytracing settings I used while working on the project.


These settings, along with the Performance DLSS option gave me a good performance to work on the scene. I then set up a Movie Pipeline Render Config file with the final high-sample & resolution raytracing settings. These will only be used when rendering the final shots with the Movie Render Queue. A lot of these settings where not really needed in this project but were migrated from a previous project and I thought I'd add them to the list.



Light Setup

Since all of the scene utilized raytracing, lighting it was a breeze and I had the flexibility to have many iterations. I tried for the first time to recreate my Marmoset Toolbag workflow. That basically means, start off with a low-intensity HDR to make sure I don't have completely dark shadows, continue with a basic three-lighting setup (key, fill, rim lights) & finish off with some "painting" lights to guide the viewer's attention to. Additionaly, I used exponential height fog to get that bright and vivid background color and used a strong vignette value in my post process volume to get a nice gradient for it.  In the gif below, you can see how the different lights help build up the scene bit by bit.



Standard Master & Ray-traced Glass Materials

There weren't a lot of changes to do with the standard master material because Grigoris had already done a great work with the texturing of all of the assets. I mainly exposed a couple of intensity parameters for Base color, Roughness and added a small subsurface intensity value. Most of the meshes were exported separately so I had the flexibility to do slight changes in different assets to get more consistent values throughout.

The glass shader was a bit more tricky but connecting the refraction nodes to the specular input did the trick. Some of its setup is not super intuitive, and a proper stylized glass material is still on my list for any future projects.


Kuwahara filter

Kuwahara is a neat, little filter that I've come to love in recent times. It performs a certain screen-space effect that gives everything a slight brushstroke look. Its main limitations are 1. that a stronger intensity effect is very heavy in terms of performance and 2. it's really resolution-depended so you really need to be careful with the radius value of the effect. For ease-of-use, I set it up in its own post process volume and made sure to enable it only when it was time to do the final renders. Below you can see some closeups of what the effect achieves. If you're interested in recreating this effect, check out this awesome youtube video!



That's all for this time folks! See ya all on the next one.
Angelo

Deserted Canyon Camp | Tech Breakdown

Making Of / 07 May 2021

It's been quite some time since my last blog post but 2021 was one of my busiest times so far. Last month I joined the Beyond Extent community with their "Shady Rest Stop" challenge and this blog post is a tech breakdown of the technical bits and bobs that I created for the environment. In case you missed it, click here to see the full environment post!

One really important thing that I'd like to point out is that this was a team effort and I was lucky to have teammates that wanted to focus on asset creation.  This gave me the chance to take full responsibility for almost all in-engine aspects and work on materials, lighting, post-processing, cameras, and some set dressing.

Here are the links to the awesome people that the awesome stylized team consisted of!
https://www.artstation.com/nikkitaracquel

https://www.artstation.com/sasho

https://www.artstation.com/edricjoe

https://www.artstation.com/tomseas

https://www.artstation.com/m4njotsinngh

To start with, this environment was the perfect opportunity to dive deep into RVTs (Runtime Virtual Textures) after my brief exposure with them during Artstation Challenge. I managed to extend the landscape blend functionality to also sample proper normal information and roughness. This gave me the 100% seamless blend even on assets that have faces perpendicular to the landscape. This came in extremely handy while trying to blend all these hard architectural surfaces into the landscape.


Some videos showcasing said blending and some parameter tweaking



And here's some of the material setup behind all this magic! I organized this bit on a material function for future re-use.


I had to do a lot of troubleshooting to get the normal blending to work on all meshes but in the end, using World Space normals did the trick. Just keep in mind to use a TransformVector (Tangent -> World Space) in your asset master material before blending it with the landscape normal. 


Aside from RVTs, one of the other focus areas of my research in this environment was creating a multi-purpose asset master material. I ended up using it for all opaque meshes, so I'll call that a win. In the video below you can see some parameter tweaking of some of its features.  



  Ain't it a beaut? Remind me to use MaterialAttributes to hide all that Triplanar textures spaghetti next time.


Lastly, the foliage shader had some interesting challenges for me to tackle but due to time constraints, it wasn't one of the main priorities for this scene. I used a two-level wind distortion (using WPO), similar to that of my Arstation Challenge environment. Since my teammate prepared all base color, form & normal textures, there was no need to have in-depth base color and roughness controls. 


Thank you for taking the time to read this and a special thank you to all of my team members and people at the Beyond Extend community, making awesome challenges like this one happen!  See you on the next one!

Angelo

November 2020 Update

News / 29 November 2020

Hey there!

I always feel like it's been a while since the last time I wrote a blog post, but then I realize that it's only been a month or two. I really like the way I can document my professional life and progress with these posts, so huge thanks for sticking by and reading these

Let's start on a high note, shall we? Last month, I was asked to write a breakdown for my Witch Hut scene! This was a great opportunity for me to write down the most important steps in my workflow when working a detailed environment. In case you missed it, you can check out my post here and read the article here. And don't forget that my inbox is always open to everyone who might have a question or need any clarification on anything that I’ve written here!


In other news, I soft launced a tight-knit 3D Art community over on Discord. The server's main goal is to be the go-to place for Greek 3D Artists to hang out, meet each other and share their knowledge and useful resources. If you're not Greek, fret not though! Most of us speak English and we'll make sure everyone feels welcome and included in our neat little corner of the internet! If that sounds like a good proposition, feel free to  join our server and say hi!

Invite Link: https://discord.gg/ymtXhdQ8nA

Lastly, after a random discussion with a friend of mine, I created a neat little (but extremely flexible) procedural stylized brushstrokes material. I'm currently doing a last bit of polish but I hope to have it ready and published sometime next week. I won't bore you with the technical details for now but definitely keeep an eye out for it. Below is a quick sneak peek screenshot from the final product.


This year has been a hell of a ride both personaly and professionaly and I'm sure most of you can relate to that. Thankfully there's also a couple exciting behind-the-curtain projects that I'm currently working on, so stay tuned for some more exciting news soon!

Later days,
Angelo

September 2020 Update

News / 30 September 2020

Howdy! Time flew fast these last two months. Sooo without further ado let's get into the juicy stuff! This weekend was very special to me. The reception I got from the Witch Hut scene is still mind-blowing to me. Thank you so much for taking the time to check it out. Check out the full post here in case you missed it. I'll currently in the process of documenting some parts of the scene making process and I'll probably have some more exciting breakdowns next time around.



In other news, the game I've been working on since I joined Terahard has been officially revealed! What you see is still early day footage and a lot of things are subject to change as development continues. If you like what you see, head over to the Steam page and show us some love.



In other other news, I got a 3D printer yesterday and I'm more excited than I probably should to 3D print my own flower pot designs! For now, enjoy this super cute doggo test print.


Later days!

Angelo



 

July 2020 Update

News / 16 July 2020

Howdy!
This month's update is a little bit sooner than usual. I'll be having a 2-week break starting tomorrow and wanted to update you all on what I've been up to this past weeks. I've been slowly chipping away at the endless prop list that I have to sculpt, retopo, texture and bring in Unreal for the witch hut project and also managed to participate in the GMTK 2020 game jam. More on that later!

Without further ado, here's some closeups of some props I've brought in-engine. There's a lot small (and some big) things that I want to change by the end of the project but for now I still want to focus on making as many unique props as I can to improve my workflow, speed and consistency of things. Lighting is also pretty much work in progress and I'll probably do another pass or two when everything's in place.


Another highlight of the month was the game John, Caterina & I managed to make last weekend for the GMTK jam. The theme of the jam was "Out of control" and we decided to go with a short, linear story-driven kind of game where you play as Bob on his big interview day, where everything seems to be out of his hands.. or should I say control. It was a fun, challenging and definitely great learning experience for us all and I would love to work on a similar kind of project on a bigger scale sometime in the future.



If what you've seen piqued your interest, feel free to give the game a try over our itch.io page! PS: You can even play it directly in your browser, no download needed ;) 


That's all for now! Thanks for taking the time to read through all my ramblings.
Angelo
  



June 2020 update

Work In Progress / 20 June 2020

It's been about a month since my last update here and I'm happy to share some progress with you regarding my witch hut scene. For the first couple of weeks, there was a lot of back and forth in order to nail down the biggest shapes (floor, walls, columns, window) before I move on into detailing the smaller ones. A lot of behind the scene changes were also made to the lighting and color grading to better match the look that I'm going for.

Here is the scene at its current state


Quick shots from the sculpts of the bigger shapes. I tried to break down how the floor, table and window would be made out of and tried to reuse and rotate/ flip around as many parts as possible to avoid sculpting wooden planks for the rest of eternity. 

And lastly, here's a (hopefully not crappy-quality) gif of the progression so far. It's the first time I'm trying this fixed camera angle from the start so I'm really looking forward to make a short video with all these screenshots when the scene is finished.



I also decided to add a couple more unique assets because apparently the list of things to do was not long enough... The plan is now to start working on all those smaller props, so expect a lot more sculpt screenshots for the next time. As always, thoughts and feedback are always highly appreciated!

Thanks for taking the time to read my mublings and see ya all soon!
Angelo

May 2020 update

Work In Progress / 24 May 2020

Hey there! Life's been quite busy since last time I've written a post and I feel like I can finally share with the world when I've been slowly preparing on the side for the last couple of weeks. I figured it was time I started making something bigger than a diorama scene for my portfolio. When I saw this amazing concept piece from Ann Kondrat I immediately closed everything else and started working on it.



Although I love the atmosphere on the original concept, I will try to give it a slight twist instead of recreating something one on one. In the image below, you can see that I have kept the main pillars and hero props that will be needed for the environment but I'm planning to add a couple more of my own.



Most of the blockouts are done and with proper UVs so that I could do an initial lighting pass. If all goes as planned, I'll also have some nice high polys to share with you on the next blog post.

Cyberpunk Challenge Final Submission

General / 05 April 2020

It's been a crazy couple of last days of work and I can finally show you what I've been up to! Here's the main shot of the final scene and below that some progress shots. You can check the Artstation post if you want to explore all the tiny little details and easter notes I added all around the scene!

Main camera shot


Asset sheet

Progress shots


Unto the next one,

Angelo Tsif