At the end, I went with an entirely different approach from what I was writing about with my "voxelizer", because I got issues reading pixel values from a render target. Its only possible with static textures... So I ended up using a collision based approach, and iterating a collision box location to "scan" the volume.
I'll probably switch from instanced static mesh to simple static mesh components, so you can bake it. Unfortunately this doesn't work with instanced ones.
Performance also isn't the best because currently I iterate through the whole volume without any pre filtering so when resolution is 24, it takes ~170 ms to update. So now I'm looking into using an octree to filter out areas that doesn't need to be scanned.
At the end, I went with an entirely different approach from what I was writing about with my "voxelizer", because I got issues reading pixel values from a render target. Its only possible with static textures... So I ended up using a collision based approach, and iterating a collision box location to "scan" the volume.
I'll probably switch from instanced static mesh to simple static mesh components, so you can bake it. Unfortunately this doesn't work with instanced ones.
Performance also isn't the best because currently I iterate through the whole volume without any pre filtering so when resolution is 24, it takes ~170 ms to update. So now I'm looking into using an octree to filter out areas that doesn't need to be scanned.
Using an octree to skip empty spaces works nicely, however, it did made it much faster, but at least now it can do any resolution without killing Unreal and the computer. It generates the result during multiple frames. Later I ran into issues with baking it to a static mesh. If I use static mesh components as source, I again get bad performance from the drawcalls so its not really an option. Then I tried instanced meshes, but the merge actor and the convert to static mesh function only sees the main instance, and it doesn't see anything from a procedural mesh. I found this post about this problem: https://answers.unrealengine.com/questions/388977/i-cant-export-or-merge-procedural-mesh.html
So now I'm making an obj exporter
Edit - I did a few more things with the octree and now its actually very fast. It can process 8 depths search (256x256x256 resolution) in a few seconds. Now it doesn't need to run over multiple frames. Woohoo! I'll upload a new video when I got the obj exporter working.
It works by taking max hair and fur, creating splines from guides, converting those to geometry (so they have UV's), then generating a unique grayscale value per strand and flooding the vertex color red channel with it, doing a root to tip gradient in the green channel, and a depth gradient in the blue channel.
The vertex colors can then be baked down in your app of choice.
Big thanks to Dennis Lehmann for helping me iron out some issues i was having.
wow ! this is awesome man. There really needs to be a max--toolset for making game ready hair. Will this be released for public use?
It works by taking max hair and fur, creating splines from guides, converting those to geometry (so they have UV's), then generating a unique grayscale value per strand and flooding the vertex color red channel with it, doing a root to tip gradient in the green channel, and a depth gradient in the blue channel.
The vertex colors can then be baked down in your app of choice.
Big thanks to Dennis Lehmann for helping me iron out some issues i was having.
wow ! this is awesome man. There really needs to be a max--toolset for making game ready hair. Will this be released for public use?
I don't see why not... I mean, the workflow (at the moment) is basically:
Use hair and fur to create the hair you want, against a backplane (which will ultimately be your UV sheet). In the image above you can see i'm working on the second hair strip.
Convert hair to splines. Enable UV generation in the spline, give it whatever thickness you need and enable render in viewport, convert to editable poly.
Run script on selection. You can see on the left where i've done that on hair that's been converted to splines and then to poly.
Then you bake those vertex colors down to a plane which looks like this:
I'm going to work on making the conversion from hair and fur to the final renderable hair a single click process.
"What are you working on?" Like, nothing I can publically talk about. As usual. Sigh. Cool work almighty_gir - now to fix the rest of the hair authoring pipe?
"What are you working on?" Like, nothing I can publically talk about. As usual. Sigh. Cool work almighty_gir - now to fix the rest of the hair authoring pipe?
finally got round to doing more work on my obj space cookie cutter modifer for max https://youtu.be/piBuF8CdQhc lot of work yet but showing some promise. https://youtu.be/1PwLvG-cIJ4 animated versions with a quick test of max's built in cut clean up routines (seems to just hide all the new edges added that weren't in the cut doesn't remove any "incidental" verts though so we won't be using that)
thanks @almighty_gir, dished the goods as much as I can on Achieving Anisotropy; should help you understand what I've done. As for how, I suggest getting comfortable with the Maya API and python.
you know its going to be tricky when you have to use visual aids to help debugging https://youtu.be/t45kIHz3jmk even when you think you've covered every angle sods law dictates an artist will break it!
btw those animated gifs ^^ above are killing my cpu so badly it's nigh on impossible to type.
first stage clean up removing all the incidental verts from the cut https://youtu.be/Vv7wak9HKT8 my brain is cooked !
finished the clean up code https://youtu.be/0USokCVHpiA has an added topoly modifier applied to remove concave polys and restrict poly degree to 4.
This super cool model has been made by the awesome 3D Character Artist Yekaterina Bourykina and is available for free Here's the link : https://www.artstation.com/artwork/QqeVL
One of my biggest frustrations in Maya was losing my local object orientation when I combined objects together. That and the object being pulled out of it's hierarchy...and it's pivot automatically being sent to the origin. F' that noise!
I finally figured out how to combine objects together while maintaining the object's original rotation, translation, hierarchy, pivot, and name. Rotation was the big breakthrough that I hadn't found in other combine scripts. Now that I've been using it for awhile, I'm not sure how I lived without it
One of my biggest frustrations in Maya was losing my local object orientation when I combined objects together. That and the object being pulled out of it's hierarchy...and it's pivot automatically being sent to the origin. F' that noise!
I finally figured out how to combine objects together while maintaining the object's original rotation, translation, hierarchy, pivot, and name. Rotation was the big breakthrough that I hadn't found in other combine scripts. Now that I've been using it for awhile, I'm not sure how I lived without it
Good stuff! How well does it work when combining objects have different materials, or pulling faces off of an object that has multiple per-face materials? I've been using a couple other scripts to avoid materials breaking (usually), but they don't do the fancy things yours does.
@throttlekitty Am I interpreting this correctly?: "...an object that has multiple per-face materials". Are you saying, for example, that you have a face on an object that has two materials assigned to it at once, or are you saying you have an object which has multiple materials assigned to different faces (but still only one material assignment per face.)?
If it's the former, I didn't know you could even do that. I'd love to know how and the context of usage!
If it's the latter, I personally have not seen any issues when combining objects, detaching faces, or cloning faces on objects with multiple material assignments. A lot of the content I deal with has multiple material assignments.
If you have a test case you'd like me to validate for you I'd be more than happy to put it through it's paces. cheers!
slight diversion today Outline Spline as a modifier, also with a rail option (the real reason as I need 2 "rail" splines to generate some specific meshes) also added a nifty manipulator too.
added ray intersect traverse to my kdtree code, finding all verts within a pescribed distance from the ray (I use a reverse look up table to the get the faces used by the verts) , the 4096 tri teapot is averaging about 200 low cost look ups giving 32 ish faces to test the ray against to get the true intersection.
always wanting to reinvent the wheel and having to create a lot of tri meshes where I have "no control" of where the polys would be I created my own quadify mesh modifier for max.....
Wrapping up the next version of my ZBrush plugin that helps managing subtools. The update will include boolean group support, color & will hit the shelves next week !
Did my own lambert shader in glsl that reads a splatmap to place different textures at terrain levels. The grid lines are procedural shader magic. Next step will be a nice water shader. At the moment it just displays depth values.
I have been slowly increasing my list of custom scripts these past month. This time I did a quick ID material generator. I know some already exist, but mine was focused on my laziness and the fact the colors themselves don't matter. Instead I just generate random colors and allow to quickly assign them : Here I assign a color per mesh, if there are not enough colors, I create the one I need. You can randomize until you find a scheme that works for you. I'm thinking about adding it to my froTools (which I recently updated by the way).
Version 1.1 of my ZBrush plugin FJTools went live today. The plugin was built with the idea in mind to improve my export/baking pipeline. To achieve this the plugin allows you to organise your Subtools into groups, which then can be batch processed.
In this update I added a few handy features. One of which is copy/pasting between different tools, while maintaing their attributes.
Been making my own live Booleans Plugin Kit for modo, May have been able to finish it up today if one line of code didn't cause me such trouble, so far it is super light weight and fast.
my EZ Booleans kit for modo is getting there, worked on this for a couple of days hadn't done any coding in python before and hadn't done any scripting of any sort really for a good few years so it has been pretty fun to get back into it, but Lionshare of the scripting is done now going to just be polishing off the menus and selection sets in the next day or so.
Replies
I'll probably switch from instanced static mesh to simple static mesh components, so you can bake it. Unfortunately this doesn't work with instanced ones.
Performance also isn't the best because currently I iterate through the whole volume without any pre filtering so when resolution is 24, it takes ~170 ms to update. So now I'm looking into using an octree to filter out areas that doesn't need to be scanned.
https://answers.unrealengine.com/questions/388977/i-cant-export-or-merge-procedural-mesh.html
So now I'm making an obj exporter
Edit - I did a few more things with the octree and now its actually very fast. It can process 8 depths search (256x256x256 resolution) in a few seconds. Now it doesn't need to run over multiple frames. Woohoo! I'll upload a new video when I got the obj exporter working.
this is a slowed down version, for demonstration...
References:
https://en.wikipedia.org/wiki/Octree
https://en.wikipedia.org/wiki/Octant_(solid_geometry)
https://www.youtube.com/watch?v=jxbDYxm-pXg
http://www.merl.com/publications/docs/TR2000-15.pdf
a lite break down at http://technicalartlead.blogspot.com/2017/10/basic-ibl-shaders-in-hlsl.html
wow ! this is awesome man. There really needs to be a max--toolset for making game ready hair. Will this be released for public use?
- Use hair and fur to create the hair you want, against a backplane (which will ultimately be your UV sheet). In the image above you can see i'm working on the second hair strip.
- Convert hair to splines. Enable UV generation in the spline, give it whatever thickness you need and enable render in viewport, convert to editable poly.
- Run script on selection. You can see on the left where i've done that on hair that's been converted to splines and then to poly.
Then you bake those vertex colors down to a plane which looks like this:I'm going to work on making the conversion from hair and fur to the final renderable hair a single click process.
Like, nothing I can publically talk about. As usual. Sigh.
Cool work almighty_gir - now to fix the rest of the hair authoring pipe?
lot of work yet but showing some promise.
animated versions with a quick test of max's built in cut clean up routines (seems to just hide all the new edges added that weren't in the cut doesn't remove any "incidental" verts though so we won't be using that)
still writing my post on aniso content and shaders, but getting there
http://technicalartlead.blogspot.com/2017/11/achieving-anisotropy.html
As for how, I suggest getting comfortable with the Maya API and python.
even when you think you've covered every angle sods law dictates an artist will break it!
btw those animated gifs ^^ above are killing my cpu so badly it's nigh on impossible to type.
first stage clean up removing all the incidental verts from the cut
my brain is cooked !
finished the clean up code
has an added topoly modifier applied to remove concave polys and restrict poly degree to 4.
This has not been mentioned here but in my tweet : https://twitter.com/blackfirestu/status/930120077273452544
This super cool model has been made by the awesome 3D Character Artist Yekaterina Bourykina and is available for free
Here's the link : https://www.artstation.com/artwork/QqeVL
F' that noise!
I finally figured out how to combine objects together while maintaining the object's original rotation, translation, hierarchy, pivot, and name. Rotation was the big breakthrough that I hadn't found in other combine scripts. Now that I've been using it for awhile, I'm not sure how I lived without it
Check out the demo. Comes with an entire suite of about 50 other tools.
https://youtu.be/O2mK7I1Errw?t=85
http://www.thomashamiltonart.com/TTools.html
the hidden cutter (a cylinder on a path constrain) and base is on a sine wave controller with modifier set to difference
Am I interpreting this correctly?: "...an object that has multiple per-face materials". Are you saying, for example, that you have a face on an object that has two materials assigned to it at once, or are you saying you have an object which has multiple materials assigned to different faces (but still only one material assignment per face.)?
If it's the former, I didn't know you could even do that.
If it's the latter, I personally have not seen any issues when combining objects, detaching faces, or cloning faces on objects with multiple material assignments. A lot of the content I deal with has multiple material assignments.
If you have a test case you'd like me to validate for you I'd be more than happy to put it through it's paces.
cheers!
https://vimeo.com/242842322
slight diversion today Outline Spline as a modifier, also with a rail option (the real reason as I need 2 "rail" splines to generate some specific meshes) also added a nifty manipulator too.
Finally launched the FREE Fake Interiors Unity shader pack. Check it out, it's fully editable in Amplify Shader Editor (optional).
Feedback and request welcome.
Fake Interiors - Asset Store
added ray intersect traverse to my kdtree code, finding all verts within a pescribed distance from the ray (I use a reverse look up table to the get the faces used by the verts) , the 4096 tri teapot is averaging about 200 low cost look ups giving 32 ish faces to test the ray against to get the true intersection.
it uses a "squareness" factor and the face edge angle for it's decisions it can also reject concave polys too.
https://gfycat.com/GratefulVillainousAnhinga
I go over latest changes in V-HACD Toolkit:
The update will include boolean group support, color & will hit the shelves next week
Doing a small webgl terrain generator that generates landscapes like in transport tycoon.
Did my own lambert shader in glsl that reads a splatmap to place different textures at terrain levels. The grid lines are procedural shader magic. Next step will be a nice water shader. At the moment it just displays depth values.
Here I assign a color per mesh, if there are not enough colors, I create the one I need. You can randomize until you find a scheme that works for you. I'm thinking about adding it to my froTools (which I recently updated by the way).
A similar result you can already do in automodeller for 3ds Max
So that's the goal
The plugin was built with the idea in mind to improve my export/baking pipeline.
To achieve this the plugin allows you to organise your Subtools into groups, which then can be batch processed.
In this update I added a few handy features. One of which is copy/pasting between different tools, while maintaing their attributes.
Been making my own live Booleans Plugin Kit for modo, May have been able to finish it up today if one line of code didn't cause me such trouble, so far it is super light weight and fast.
my EZ Booleans kit for modo is getting there, worked on this for a couple of days hadn't done any coding in python before and hadn't done any scripting of any sort really for a good few years so it has been pretty fun to get back into it, but Lionshare of the scripting is done now going to just be polishing off the menus and selection sets in the next day or so.
Finished up my contact blending tool for Unity, to hide intersection seams !
just wanted to show some work i did. This is basically to bring the graphite modeling from max to maya. Almost managed to get most of the things. hope you all will like that.
Please follow the instruction on the gumroad page.
Gumroad : https://gumroad.com/products/eylOq
Highend : https://www.highend3d.com/maya/script/nitropoly-graphite-modeling-for-maya
Get it here: https://gum.co/pyMop
Discuss it here: https://community.foundry.com/discuss/topic/139479/kit-the-python-mesh-operator