• In 3d

    Smarter project structure using Symlinks

    It is very hard to come up with project folder structure that works. Especially if you are using multiple content creation applications. You often want to use the same assets in different places. Usually you end up with a huge mess – files from different apps mixed together with temporary files and hard to use relative paths ( like ../../../scene/textures/bricks.jpg) or even worse – absolute paths that break as soon as you move project files around. Another issue is when it comes time to clean things up for archiving – everything is mixed together. It’s hard to know which files, sequences […]
  • In 3d

    Houdini Engine: Using Unity Tilemaps

    is a fantastic technology. If you don’t know what Houdini Engine is – it is a way to run Houdini inside other applications. In other words – it is a plugin that allows you to generate procedural content directly inside another application. You can even use objects created in your 3d application as an input for your Houdini setups. Currently there are integrations for all mayor 3D DCC applications as well as two most popular game engines – Unity and Unreal Engine. This is especially powerful, because it allows game developers (or other game engine users) to utilize Houdini to create […]
  • In 3d

    Set UV island texel density

    Today I needed to enforce certain texel density for my procedurally generated meshes in Houdini. I found this tool, but unfortunately supplied HDA did not work on my Indie license and it was locked, so I had to recreate this myself. Nothing complicated, but It is actually a very useful tool to have when dealing with procedurally generated meshes. Basic idea: First for each primitive you measure its area in world space and in UV space. Then you multiply world space area with target texel density (how many pixels you want per square meter) Multiply UV space area by texture pixel count […]
  • In 3d

    Blender Multi Render script

    If you are doing any kind of product visualization work, you have probably met with a situation where you need to render multiple camera angles of a product with multiple material variations on it. Doing it by hand can be quite tedious – especially if each render takes longer time. You must wait when the render finishes, change camera or material, change output path.. render again. Not exactly a fun activity and also with high probability of human error. Lucikly blender has few very useful python callback functions: bpy.app.handlers.render_pre bpy.app.handlers.render_post bpy.app.handlers.render_cancel You can register your own functions there, and they will be called before render […]
  • In 3d

    Procedural subdivision surface in VEX, Houdini

    For whatever reason I decided to create procedural subdivision surface effect in pure VEX. Probably quite useless, but It was a good exercise in how to generate and manipulate geometry in VEX. Usually you run vex over points or primitives, but because I needed to actually generate new points and primitives (in subdivision step), I had to run VEX in Detail mode – run once and process geometry manually. It was also a bit tricky due to how houdini handles edges . Code is split into two wrangle nodes – one does subdivides the geometry and other does the smoothing. Everything is in […]
  • In 3d

    Procedural volumetric clouds in Blender Eevee and Cycles

    As Blender 2.8 reached it’s completion, I was seeing more and more people exploring volumetric shaders in Eevee. Historically volumes have been very slow to render on CPU and even GPU render engines. But with Eevee and it’s almost real time rendering speeds, now you can experiment with volume shaders much easier than before. Seeing people create clouds and nebulas, I wanted to do some experiments and come up with my own solution on how to create fully procedural clouds. What’s cool is that the same shaders also work in Cycles. Slower of course, but producing much higher quality output […]
  • In 3d

    Promote Take overrides in Cinema 4D

    You know the situation – working with takes, doing your thing. Only when after 300 hours of super productive hustling, you realize that Auto Take button was on and you have been working in wrong Take! Well, I find myself in this situation at least 400 times a day, so here is a little tool to help with this! It works by promoting selected objects overrides (moving up to parent Take). This allows moving your changes out of the take easily without loosing them or manual labor. How to use: Select take you want to promote parameters from Select Objects in take […]
  • In goodies

    C4D Freeze Scale Hierarchical

    Sometimes, when importing fbx scenes from other DCC apps, you get large scale values on objects. For me this always happens when importing from Blender. It’s quite annoying to fix this in C4D as you have to do this manually for each object in Axis mode. To help with this, I created this small utility script, that quickly goes through whole hirachy (starting from top selected object) and resets scale to 1,1,1, while preserving all other transformations. Only case where it does not work correctly is if there are some shearing transformations from non uniform scale + rotation combo. But this […]
  • In 3d

    Tiles transition shader in Blender

    Based on ideas in my old hexagon tiles Blender shader, I created this animated, topology independant, cubic tiles shader effect. Generated cubes are fully 3d and if you render with Cycles, you can even have some “filling” with volumetric shading. Everything is 100% procedural and based on just basic math nodes. Tiles are calculated in world space, so local object rotation will not have any effect. Awesome thing is that the shader works both in Cycles and Eevee without any modifications. But unfortunatly Eevee does not support fully shader based volumetric rendering at this moment. There are two issues with it. […]
  • In 3d

    Run python command in Blender from 3D view

    Are you tired of getting the “RuntimeError: context is incorrect” error when trying to run python commands in Blender?!? Of course you are!! But sweat no more – thanks to this new and super useful Blender addon, You can run your Python commands directly from any 3D view and get the correct context – always! This is a solution to dreadful blender context is incorrect problem You have been waiting for! But wait!!! There is more! You can run either a single line or even execute whole script documents! So forget about writing custom operators or doing complex context copy operations just to […]
  • In goodies

    KTools for C4D

    Utility plugin for Cinema 4D that quickly cleans scene objects from empty selection tags and materials assigned to empty selections (assigned to nothing) and material tags assigned to no-material and no selection. This is oftwen useful when importing scenes from other DCC apps to clean up whole scene quickly. Update 07.09.2021:  Updated plugin to work on S23-S24. Added automatic cleanup of broken material tags – tags with no-material and no-selection assigned. File download:   ktools_v015.zip ( C4D S23+ ) ktools_v012.zip ( C4D R16-S22 )
  • In 3d

    Procedural N-Gon Blender shader

    Recently I saw that someone was selling procedural hexagon tiles Blender shader. I became very curious about how this was achieved and spent couple days trying to figure this out on my own. Turns out you don’t need much more than just a bunch of math nodes and UV coordinates as an input. The rest is just basic geometry and basic math. No OSL. Works on GPU and in the viewport! Updated!:  Recently I updated this to Blender 2.8 and was pleasantly surprised that It also compiles and works in Eeevee exactly as in Cycles. That’s crazy awesome, if you ask […]
  • In goodies

    Parent selected layers to new Null script for After Effects

    I created a small script for After Effects that allows to quickly parent all selected layers to a new Null layer which is automatically centered around selected layers. Layers that are already parented will not be touched (useful if you are parenting whole hierarchy – then script will only parent top parent layers). Null layers in and out points will be set to mach the total range of all selected layers. Also there is an option to lock selected layers after parenting. As always – you must have your comp selected in project window. That’s the limitation of AE scripting.  How to use: 1. Download […]
  • In 3d

    Groups for Blender addon

    Update for Blender 2.8 is available! I moved all the commands from side panel to Object-Parent menu.One feature I find missing in Blender, is ability to quickly group objects under new Empty (Null) object. I found an addon called “Parent to Empty” – it was great but did not work inside hierarchies. Based on that addon, I created my own, improved version – which works in hierarchies and as a bonus – removes children object inverse matrix. (About the strange inverse matrix – read below.) As in original addon, you can create the Empty object in three places – center of […]
  • In 3d

    Center object to children Blender addon

    One thing that I have to do very frequently but could not find easy way to do is centering object to its children or moving parent object to 3d cursor position without moving children. Normally you would unparent children from the parent object. Then you would move the parent to where you want it to be. After that you would try to find the unparented children somewhere in outliner (they are moved to the root of the hierarchy and scattered around by name). Then you would parent them back. Super annoying! No more! There is another command included – bpy.ops.object.snap_sparent_to_cursor() or search for “Move parent […]
  • In goodies

    Parenting puppet pins to null objects script for After Effects

    I created a free addon script for After Effects that allows parenting puppet pins – it creates control Nulls for all Puppet Tool pins of the selected layer. Nulls are created in correct positions. Nulls will have the name of the pins with an optional prefix added. Layer name can also be added after prefix. Puppet tool pins are parented to the nulls with expressions. You can also specify the scaling of the nulls to suit your needs. tip: if you have not named your pins and the “Prefix layer name” is on, default puppet names “Puppet Pin 1..x” will be […]