Jump to content
3DCoat Forums
ajz3d

Clone newly imported retopo group precisely over existing sculpt instance?

Recommended Posts

I'm facing the following problem...

 

I imported a light bulb to sculpt room. A complex object that has several sub-objects. Then, I created several of its VoxTree instances and transformed them into specific positions (their empty parent object was what I transformed). I have a retopo mesh already done, so what I want to do now, is to apply the exact same transformations, that I applied to my object's VoxTree instances, to my low-poly clones. So it would result in each of the retopo groups being in the EXACT same positions (and orientation) as their VoxTree counterparts that appropriate retopo groups need to cover.

 

I suspect, though I might be mistaken, that it might be possible with the new scripting classes that were introduced in the recent BETA version. The thing is, that I do not have time ATM to study the new docs.

 

I had a thought of reimporting hipoly and lowpoly files, enabling conform to retopo and transforming each instance and its corresponding retopo group at the same time, from world's origin to destination, but I fear that the retopo geometry that is inside the light bulb will start to snap to nearest hipoly geometry on each, hmm... "tick", and would end up all garbled up.

 

Do you have any suggestions guys?

 

PS. I wish each object that we have in 3B files (be it retopo group or a VoxTree layer) held easily accessible numerical values of its current translation, rotation and scale values (and order of transformations) in relation to the world coordinate system.

 

PPS. I know how to do this with the involvement of 3rd party software. The question is can it be done in 3D-Coat only. :)

Edited by ajz3d

Share this post


Link to post
Share on other sites

why not first transform them into specific positions in retopo room ?

  • Like 1

Share this post


Link to post
Share on other sites

why not first transform them into specific positions in retopo room ?

Carlos, how do I find out those precise specific "positions"? Remember, it's not only XYZ position, but also rotation in local space and scale (some bulbs are larger than others)! And the order that those transformations are calculated in. :) Edited by ajz3d

Share this post


Link to post
Share on other sites

This ?

attachicon.gifTransform.jpg

Transform tool only allows for inputting translation vector. I need to know the rotation and scale of the instances. Edited by ajz3d

Share this post


Link to post
Share on other sites

Transform tool only allows for inputting translation vector. I need to know the rotation and scale of the instances.

I think your idea about using the Conform Retopo Mesh option is best. You can now see the Retopo mesh in the Sculpt room. So, it would be best to hide or ghost objects nearby, that you do not want it snapped to. With each instance, you would need to clone a copy of the original retopo mesh and unhide the rest. Does seem a bit tedious, but the other option is to just clone the retopo mesh for each voxel instance and move them into place manually.

 

What might streamline this in the future is having an option in the INSTANCER tool options, to INSTANCE RETOPO MESH. That way, 3D Coat is instancing a Retopo mesh copy and applying the same transforms it is to a given Voxel object.

Share this post


Link to post
Share on other sites

Thanks for the advice. I just tried Conform Retopo Mesh and right after scaling down the light bulb VoxTree hierarchy (with Transform tool), I got this:

 

post-12523-0-89185100-1460324169_thumb.j

 

This, pretty much, is what I suspected that will happen.

 

Several steps of Undo led me to this state:

 

post-12523-0-33485400-1460324201_thumb.j

 

Scene reload was necessary.

Share this post


Link to post
Share on other sites

I can't be of any help, but yeah I tend to avoid the conform retopo function even on simpler assets as it tends to jig my verts around a bit and I'll have to go back in and correct it. Also pretty annoying that it will conform whatever retopo verts are within the vicinity, regardless of layer. Which makes sense I know as you're not literally hooking up sculpt layers to retopo layers, I don't blame the tool, I just think it's a bad tool for most scenarios.

Share this post


Link to post
Share on other sites

I can't be of any help, but yeah I tend to avoid the conform retopo function even on simpler assets as it tends to jig my verts around a bit and I'll have to go back in and correct it. Also pretty annoying that it will conform whatever retopo verts are within the vicinity, regardless of layer. Which makes sense I know as you're not literally hooking up sculpt layers to retopo layers, I don't blame the tool, I just think it's a bad tool for most scenarios.

I was the one who requested it of Andrew after noticing that it was a real PITA to go back and make some sculpting/posing tweaks....only to have to do a ton of work trying to make either the original low poly mesh fit the change or your Retopo mesh, if you have gotten that far. I think it works about as well as one can expect and has saved me a lot of work in the past.

 

The thing to remember is that you do not want any other retopo meshes visible. Whatever is visible, that is what 3D Coat assumes you want to conform. If you have other objects in the vicinity that you do not want manipulated, then you must hide it.

Share this post


Link to post
Share on other sites

Even in it's earliest implementation, it worked pretty darn well....so it's not a bad tool for most scenarios. Just the opposite.

 

Share this post


Link to post
Share on other sites

I was the one who requested it of Andrew after noticing that it was a real PITA to go back and make some sculpting/posing tweaks....only to have to do a ton of work trying to make either the original low poly mesh fit the change or your Retopo mesh, if you have gotten that far. I think it works about as well as one can expect and has saved me a lot of work in the past.

 

The thing to remember is that you do not want any other retopo meshes visible. Whatever is visible, that is what 3D Coat assumes you want to conform. If you have other objects in the vicinity that you do not want manipulated, then you must hide it.

The problem I encountered can be reproduced with any pair of objects (with the default human figure and its decimated counterpart, for example). It seems that scaling the object down breaks corresponding retopo groups. It looks almost like their vertices were trying to snap to some invisible reference (and there's none present in the scene).

Scaling up yields less severe, but also noticeable problems.

 

post-12523-0-16075500-1460376733_thumb.j

 

I will report it as a bug.

 

Meanwhile, I will position my objects in Houdini.

Edited by ajz3d

Share this post


Link to post
Share on other sites

The problem I encountered can be reproduced with any pair of objects (with the default human figure and its decimated counterpart, for example). It seems that scaling the object down breaks corresponding retopo groups. It looks almost like their vertices were trying to snap to some invisible reference (and there's none present in the scene).

Scaling up yields less severe, but also noticeable problems.

 

attachicon.giftransform_conform_retopo_mesh_after_scaling_down.jpg

 

I will report it as a bug.

 

Meanwhile, I will position my objects in Houdini.

It may very well be a bug, but you have to be very careful scaling inward, and this is not a problem exclusive to 3D Coat. I have to use the same precautionary measures when using the SHELL Modifier in 3ds Max. At some point you will create self-intersection. What 3D Coat is doing is binding each retopo vert to it's nearest counterpart on the voxel model. When you scale inward, just like with a Shell modifier, each vert starts to lose real-estate and intrudes upon the space of other verts. This is why it is not as much of a problem when scaling outward, rotating, or just moving verts.

 

It's a tool you just have to be cautious with, and I don't know if Andrew can improve it or not. Maybe so, but the problem you describe seems to be identical to the self-intersecting issues I have always noticed with the SHELL Modifier in Max.I was recording a tutorial (semi-project series) showing how a user could go from the Texture Painting stage, back to the earlier stages to perform some modeling/sculpting edits both in the Retopo and Sculpt room...then get the changes back into the Paint Room without upsetting the apple cart. In the process I show how to repose the Robot using the Pose tool in the Sculpt Room with CONFORM RETOPO MESH enabled.

 

It wasn't easy, and I even reported a small bug with the CONFORM TO RETOPO feature (you could UNDO the sculpt but the retopo mesh would not undo). Andrew fixed it a few builds ago and shortly thereafter, he added the ability to see the Retopo Mesh in the Sculpt Room, while performing this operation. As you know, the Robot has a lot of individual parts, and yet 3D Coat did an admirable job keeping the Retopo mesh bound to the right places.

 

In your case, it probably is best to just clone + transform the one retopo mesh per Voxel instance. Sure, it may be a bit more tedious than you like, but if you cannot use Symmetry to help clone across an axis plane or in a radial fashion, then that is just the price of admission, it seems.

  • Like 1

Share this post


Link to post
Share on other sites

Yes, but shell tools in various applications usually utilize vertex normals as guides for displacement direction for new vertices. So intersections in tight corners will always happen if the extrusion value the user provides crosses a certain threshold. But as you can see from the last screenshot I provided, there's a distortion going on convex surfaces going on (see: the feet for example)!

Everything that you said in your last post is very true, but it applies only to scenarios when Conform retopo mesh is used with tools like Pose or Move. Tools that perform an actual deformation of the surface. This is when retopo mesh snapping is required.

Transform tool is a different beast IMHO. You deal with transformations of whole objects. There are no deformations going on, hence vertex snapping becomes unnecessary (at least in most use cases).

To better explain what I mean, I will provide an example of my solution in Houdini.

post-12523-0-63973600-1460406617_thumb.p

 

post-12523-0-90425400-1460406973_thumb.j

I can move my lowpoly objects anywhere I want and highpoly will conform (I chose conforming of highpoly meshes because of performance reasons in the viewport). This solution works purely on transformations of primitive groups (you can call them objects). No vertex snapping is necessary.

To sum up, I think that Conform retopo mesh when used with Transform tool should be treated differently than if it is used with Pose, Move or any other tools. At least it should provide a flag, which if toggled, would force 3D-Coat to use transforms for conforming, and if unchecked - vertex snapping.

Share this post


Link to post
Share on other sites

Yes, but shell tools in various applications usually utilize vertex normals as guides for displacement direction for new vertices. So intersections in tight corners will always happen if the extrusion value the user provides crosses a certain threshold. But as you can see from the last screenshot I provided, there's a distortion going on convex surfaces going on (see: the feet for example)!

Everything that you said in your last post is very true, but it applies only to scenarios when Conform retopo mesh is used with tools like Pose or Move. Tools that perform an actual deformation of the surface. This is when retopo mesh snapping is required.

Transform tool is a different beast IMHO. You deal with transformations of whole objects. There are no deformations going on, hence vertex snapping becomes unnecessary (at least in most use cases).

To better explain what I mean, I will provide an example of my solution in Houdini.

attachicon.gifconform_retopo_mesh_houdini.png

 

attachicon.giflight_bulbs_distribution_hi_and_lopoly.jpg

I can move my lowpoly objects anywhere I want and highpoly will conform (I chose conforming of highpoly meshes because of performance reasons in the viewport). This solution works purely on transformations of primitive groups (you can call them objects). No vertex snapping is necessary.

To sum up, I think that Conform retopo mesh when used with Transform tool should be treated differently than if it is used with Pose, Move or any other tools. At least it should provide a flag, which if toggled, would force 3D-Coat to use transforms for conforming, and if unchecked - vertex snapping.

Good point. Cut and paste this post or link this thread in an email to Andrew, and see if he is willing to do something about it. I agree that we need a better way to make Retopo instances along with Voxel instances.

  • Like 2

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×