Blender - 3D Lighting Rendering Blogs

         Blender is free software that everybody can use,  Usually, I use Blender just for Lighting and Rendering 

1. Install ACES

    To use ACES colorspace is quite easy go to this ACES Github link and download it as an archive. Once it's complete, extract the latest version and replace it inside "C:\Program Files\Blender Foundation\Blender 3.5\3.5\datafiles\colormanagement"

 2. Cycles Faster Volume Rendering v Blender Octane

    This is quite a funny experience, I didn't really know if cycles could render faster than Octane. I had compared both render engines and decided to switch back to cycles. To make it faster play around with cycles.volume_max_steps. Decrease it to  128, and you will see a performance increase. For the volume step render rate, it may increase the render time but not too much.

For Octane I had enough with it. too many crashes. And the scene transfer is too slow. I don't think it's good for rendering heavy scenes. The only thing I like it's very easy to get a cinematic look

Houdini Vellum Tips Tricks

 Vellum XPB solver for Houdini is really fast. You can simulate any kind of effect. The cool thing is it is you can make any material interact with each other.

Today I am going to share with you the most common issue I face with vellum, Hopefully this will speed up your work

Collision Issue, Sharp and Sticky 

Almost every time when the vellum collides with external objects.

1. Enable Multiple-Pass Solve

This happens when the vellum object collides with deforming geo and post-solve is set to 10. That would cause crazy stretching even if you increase the substeps constraint iteration.


No Energy Loss

1. Disable Fallback to First Order

Just like above colliding with deforming geo. Causing vellum doesn't have energy loss. It keeps moving/jittering with crazy behavior. Even with geo wrangle in the solver to reduce the velocity magnitude the issue still exists. Disabling this boolean will fix the issue.


Grain Tips

  1. Increase Substeps to 3 for better stable motion. 
  2. Disable OpenCL Neighbor Graph 
  3. Adjust Repulsion and Attraction weight
That was how to get nice grain sand motion. I use beach sand as reference. It has a slight stickiness and clumps


Complex Geometry 

  1. Make sure the source geometry has no overlapping faces
  2. Use uniform triangle topology as proxy, Vellum doesnt like if the points get too close or uneven this may cause jitter unstable mass during runtime
  3. Use Multipass-Solve


That's it I hope this is useful to you.




Houdini FX Geometry to Unreal Engine

 Due to the short time period, we don't have time to learn all the features inside Unreal Engine,. the tool they have given to us is not really artist-friendly in some cases. It would be faster to get it done using DCC software like Houdini. Here are several tips to send your geometry to Unreal Engine.

There are so many ways to do this. At the moment I will show you with Alembic.

Typical Alembic steps for exporting

1. Setting up path attribute per material or primitives

2. Delete unnecessary attributes

3. ROP Alembic as output, Make sure you are in polyland  It is better to use a deforming kind of exporting instead of transform only. If the are so many paths Unreal might crash and the material assignment would be painful.

On the Unreal Engine side:

1. Simply drag and drop to the content drawer

2. Select geometry cache.

3. Disable flatten track

4. Use 3ds max presets for scene conversion

5. Increase the scale to 100, m to cm. The scene scale must be decided here, not in the level. Otherwise, you will have some problems with your mesh precision

6. Drag and drop to your scene and set all world transformations to 0.

7. Add that actor to the sequencer and put the geometry cache timeline.

To tell if you exporting correctly, You didn't do any post adjustment, and the scene should be matched to another DCC.  

Tips and tricks

1. Avoid Ngons. To fix simply use divide SOP

2. Reduce the polycount as low as possible

3. Delete unnecessary attributes

4. Use Keep state instead of Project Default

5. Keyframe the visibility for unwanted behavior.

6. Export only the necessary frame range.

7. Normal is necessary, it depends on but in some cases, you can simply recompute normal in the UE side.

The point is to make the alembic file size as low as possible. The importing time in UE takes some time not instantaneous like Maya's other DCCs, That's it. I hope this is useful to you.



Houdini feat. Bifrost for Maya

 I got task to send milion particles from Houdini to Maya. The unfortunate part is we can't just load like regular Alembic. We will use different method using Maya Bifrost to load this ABC file. 

1 . Simple particles setup

2. Load ABC and read attributes using Bifrost graph in Maya.

3. Render as points inside Arnold for Maya.


Top useful youtube channel regarding Bifrost for Maya

  • BruceLee
  • MayaGuy

This is just simple scene, If you wanna have more complex stuff, feel free to visit their Youtube channels. Hope this useful to you.

Installing Nuke Toolset

 Lets say you have Custom Toolset from Nukepedia. This is the path where you should put that file.

"C:\Users\User\.nuke\ToolSets"






That's it pretty easy right



Houdini : ffmpeg ImageMagick-7.1.0-Q16-HDRI

 Here just quick tips increase your Houdini productivity. Installing ImageMagick-7.1.0-Q16-HDRI will add new codec.



Download the installer :  https://imagemagick.org/script/download.php

Install ImageMagick-7.1.0-Q16-HDRI  and Restart the PC

Thats it now you can export with FFmpeg from Mplay.

Htoa : Volume Vector Pass

 This is like actually headache can be solved easly, I was trying to get volume vector AOV and could not get it to work so I need to create custom render passes. I use arnold at the moment. It's the king for volume anyway.


First you need to have simple volume with vel field. this can be achieved with simple gas solver or simple sop vector field. 

Rename any field you wanna render. Make sure it doesn't have a conflict with houdini naming term. example I was trying to read vel in volume sample and it wasnt working end up with black image. So for vel I rename it to velocity.


Then read this attribute in volume sample, hook it to emission in ai standard volume. and crack up the emission. Now we can read attribute we wanted easly. For volume motion vector pass so that nuke can read properly you need to transform from world space to camera. Arnold has its node to change this.




That' all guys, This is can speed up yout worlflow since volume render motion blur is expensive at the moment.

Installing ACES

 This is just a quick tips how to do better render. The secrete is to use ACES color space. This is applicable to any software.

In this case I will show you in Houdini.

1 . Download ACES here : https://opencolorio.readthedocs.io/en/latest/quick_start/downloads.html

2. Extract the folder and put this in C: drive


3. Add this line in houdini.env example  OCIO = "C:\aces_1.0.3\config.ocio"


Thats it pretty easy right. Hope this is useful to you.

Unreal Engine - Achievieng Water Effects

  In today's short article we gonna talk about water effects. , unlike for movies most water fx for games is comstructed in the maaterial.  To make this is very simple Unreal Engine already gives you tool for this, You just need to enable water content in the plugin manager window.   

   To simulate the water FX  you need to enable the developer content.  And them you just need to bpFluidsim and drag and drop to the scene. Enabling waterfoam is a bit tricky you need enable the boolean operator inside the water material.  I have made this  tutorial on Youtube. 

    Thats it very easy to make water FX inside unreal. It;s very easy to use and I think its user friendly, If you wanna know more how does it work, you can simply dive in to the  asset in it self and analyze how operators are working.

Unreal Engine - Chaos Physics

  Destruction is one aspect that I really like the most in FX. In this small article I am going to explain how chaos physic works inside Unreal, its a bit easier for you . if you have dynamic background such as Houdini. Epic claims this would be future physic of this engine.

A. Chaos Physics

the way it works is simple, you do voronoi fracture in multiple times. and each level of that would have  their own constraint. so basically if the first level  is broken, you can break the next.  You can do this as many times as you want. But for me 2 - 3 is good enough.

1. Preparing Assets

I really need to make sure that the model would be destructible asset, and absolutely has volume or manifold geometry. otherwise the destruction will look bad.

2. Chaos TAB

This is the implied version in Unreal Engine 5. so you just need to go this tab and all of the sudden all the chaos features are here. Or you can call it active fracture editing mode.

B. Adding Forces.

Adding forces to destroy your chaos is not easy as Houdini. You need longer step to achieve this.  You literally need actor blueprint for this.

The sad part it takes few minutes to set anchor in Houdini. Inside unreal creating anchor field can  take a lot longer than that.

C. Secondary Elements (Debris and Smokes )

Now that we know how to destruct things in Unreal, Lets add secondary elements, such as debris particles and smoke sprite to make destruction richer.

All of this can be done using Niagara. You just need to put Niagara listener module to the system. If you want to customize just used a scratch pad module. No need to worry, scrath pad is just like attribute VOP in the nutshell.

Chaos is very good, I think to improve the performance you need to enable auto deactivation thing when the velocity reach certain threshold. just like bullet sleeping in Houdini. You really need to use C++ to make run properly in realtime. 


At the end of day I realize that this chaos workflow seems work well too inside Houdini lol.



Houdini for Unreal Engine - Realtime VFX

      Unreal Engine 5 is getting popular these days. That latest version gives you a lot of features to produce high-quality artwork in a short amount of time. Since I am just an FX artist why don't I give it a try? My goal is to understand if this tool is good enough to be an alternative for the film industry not for the game engine yet. So the priority is quality, not performance.

  I learn a lot this year in 2021 about UE the first thing that comes to my mind before trying Niagara is to transfer Houdini FX Sim to UE. So I do google to find all possibilities. SideFX already created amazing tools for game dev. To do the most common task at light speed.


A. Flipbook Textures / Sprite

   This would be the most popular one. You see them everywhere, especially in in-game asset stores. The cheapest way to make FX assets.

   Flipbook Textures simply means you are storing all the frames to the single image as rows and columns, Then you can use it later. The most common are 8X8, 12X12., That depends on the length of FX frames you have. For better performance, you need to reduce the resolution so it can smoothly in-game engine. So if this is for real-time make a smaller file, But if you do this for film in UE it's okay to have high res image. Since your gonna render it later.


So here is the step creating a flipbook in Houdini and transferring it to UE.

1. Do FX Simulation 

In the first step, I do a pyro simulation, in this case, would be a simple fire pit. This sim will be looping so I need to make sure the first and last frames are matched. After that you need to render the whole sequence It takes time but don't worry mantra is good enough for a simple volume like this.

2 Make Flipbook using COP

After rendering is complete you see the image sequence, to compile this I am gonna use Houdini COPnet there is already an existing node to make the flipbook.



3. Inside Unreal you can simply import those textures, I am applying this inside Niagara, This would be a single point emitting in the same positions.



Finally, you successfully create the first FX asset.





B. Vertex Animation Textures

Vertex Animation Texture is also known as VAT, it simply bakes the position into textures. You can add a custom channel if you want to. This is more versatile, You can control several aspects in the runtime. However, you really need a plugin from SideFX to make it works. I think this is the unfortunate part. because Unreal updating so fast I am not sure if SideFX can follow along.






C. Alembic / USD

   Here is the easiest way to import the FX cache. Especially for movies. We artists don't really need to spend too much time in the engine, Usually, I do this for Maya. It works well for the low poly count. But for large poly count like flip fluid surface, You must be dreaming ! . This is just taking too long before coming out to viewport, it stuck at importing window. Hope this feature will be better next time.


D. Volume Texture, Raymarching, the alternative of openVDB  ? 

We can't really import VDB just yet. Probably too expensive, for now, the other option is to use Volume Texture, This simply means you store voxel position as slice per slice to images, There are a lot of tools available but at this time UE5 just still beta. So most of them work well for UE4.




It was nice to give a try about UE5 one of the most painful ones is whenever you hit compile to make standalone there is always red lines and issue that means you can't compile the project. This sometimes gives me a headache. Unreal Engine is definitely the game-changer for the future industry.

Download Free Assets I made so far.

YAHYA_2021_UE5_FREE_ASSETS

Good Unreal Engine Resources :

AsherZU http://asher.gg/

ShaderBits https://shaderbits.com/blog


Houdini Python : Geometry Attribute

    There are some situations where we need to use Python SOP to manipulate the geometry,  not for replcacement of  VEX, depends on the usage.

When attribute becomes variable you can now start manipulating it.

A. Read per-elements attributes

you can acces each points dependes on the classs by using geometry class

let's say you wanna acces all of the element hat would be

node = hou.pwd() geo = node.geometry() # Add code to modify contents of geo. # Use drop down menu to select examples. for prim in geo.prims(): color = prim.attribValue("Cd") print(color)






and if you wanna write 

node = hou.pwd() geo = node.geometry() #declare attribute first geo.addAttrib(hou.attribType.Prim,"name","") for prim in geo.prims(): prim.setAttribValue("name","iceX")






B. Detail a.k.a Global Attributes is a bit different since you read this at once.

Decalare attributes

node = hou.pwd() geo = node.geometry() # Add code to modify contents of geo. # Use drop down menu to select examples. test = "hello!" geo.addAttrib(hou.attribType.Global, "test", "") geo.setGlobalAttribValue("test", test)





Read Attributes

node = hou.pwd() geo = node.geometry() # Add code to modify contents of geo. # Use drop down menu to select examples. attrib = geo.attribValue("test") print(attrib)



Windows : Installation - Tips Tricks

     Here I would share tips - and tricks using Windows, How to configure installation etc.

Why windows. not Linux

Linux is great and free, with better memory management, etc. But personally, I would say for productivity Windows is the best. 

FAQ for Windows:


Q: How to install Windows ?, 

A: it is 2023, use a USB flash drive and download the file from an online resource.


Q:How to run program at startup ?

A: Windows + R and Type : shell:startup . Put your exe shortcut there.


Q: Large file hybersys file

A: Run cmd as admin ,  powercfg /hibernate off


Q: How to block website windows ?

A :  there is host file simply follow guide there, c:\Windows\System32\Drivers\etc\hosts


Productivity Tips

There are several tricks to increase your productivity for Windows. One of them is registry hacks.


1. Open Multiple files in Windows Explorer.

Let's say you wanna open blend files at once,  The max limit is 15 so if you wanna open more than that you gotta put new reg here is the path. 

"Computer\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer"

Then create new file "DWORD32bitValue" and put decimal value, this would be the number you wanted file to open. I put 100 here. So that I can open 100 at once.


Freezing System Drive

Most popular is DeepFreeze, but there is freeware one, called Reboot Restore FX. This is just to make sure system files is safe. No need to think viruses for safety

Warning!, Disable the Windows Update otherwise you may have bootloop issues. To fix this when Restore Boot FX appears press Home then Unistall.

Houdini : Acces Method Issue Fix

     Recently I found an issue regarding shelf tool in Houdini, Since I am working in studio, I need to get access to the server.  You need to setup custom variable to make it works properly.

Therefore I put this line.

HOUDINI_ACCESS_METHOD = 2


But then new problem comes up. Whenever I try to create the new shelf tool. Houdini can't define shelf definition.




The solution is you need to copy ShelfDefinitions.shelf from 
"C:\Program Files\Side Effects Software\Houdini xxx\houdini\toolbar\ShelfDefinitions.shelf "
 to "C:\Users\USERNAME\Documents\houdini xx\toolbar"

That's it . 

Houdini : Set Up Oplib Node Default Value

     Whenever I use group SOP that would be named as "$OS" , therefore doing this manually would be a time wasting. This would be small trick for onCreated.py. file. Basically the user operator preset named "default"  will be called whenever nodes is being created. For example 

## Load User Named "default" automatically #Defintion def default(): node = kwargs["node"] path = node.path() op_path = path preset_name = 'default' cmd = 'oppresetload %s "%s"' % (op_path, preset_name) hou.hscript(cmd) #Invoke default()































Python Pillow Module : Make UV Wireframe Wider

  Have you been wondering how to widen the wireframe programmatically, There are some situations that you have to expose all the wireframes from your 3D model.  After exporting the UV wireframe, It feels like the wireframe is too thin and cannot be seen by the naked eye, You need to zoom in to make it clear, or use a photo editor to make it wider putting outlines there. Sadly this workflow is too slow.

    So, I came up with new idea. What if python can  help us. Pillow module would be very useful for this simple task. 

from PIL import Image,ImageFilter ## You need to download this module online.
from PIL import ImageEnhance def bold_wireframe(wireframe_path): ## Read from Image module wireframe = Image.open(wireframe_path) ## Read .png file width, height = wireframe.size wireframe = wireframe.filter(ImageFilter.SMOOTH) wireframe = wireframe.filter(ImageFilter.SMOOTH_MORE) enhancer = ImageEnhance.Brightness(wireframe) wireframe = enhancer.enhance(3000) pos_x = 0 pos_y = 0 ## Widthen Lines bg = Image.new(size = (width,height), mode = "RGBA") ## Store to New Image offset = 4 bg.paste(wireframe,(pos_x+offset,pos_y),wireframe) bg.paste(wireframe,(pos_x-offset,pos_y),wireframe) bg.paste(wireframe,(pos_x,pos_y+offset),wireframe) bg.paste(wireframe,(pos_x,pos_y-offset),wireframe) bg.paste(wireframe,(pos_x,pos_y),wireframe) enhancer = ImageEnhance.Brightness(bg) bg = enhancer.enhance(3000) bg.save(wireframe_path) bold_wireframe("Your images path goes here")





















    


Simple widen operation, notice the right hand side is wider then the left one.

       The idea is just to do some small offset and merge them back to one image, Since the .png format contains alpha chanel. You can also change the code above and port it direclty to the next image  operation.  Hope this would be useful to you.