MoI discussion forum
MoI discussion forum

Full Version: Help with modeling this mask hose.

Show messages:  1-2  3-22  23-29

From: Michael Gibson
3 Sep 2022   [#3] In reply to [#1]
Hi Robert, one thing is the larger pieces are open surfaces, not closed solids and so that will make it more difficult to boolean them together.

Then the other thing is to avoid gaps you should probably model it initially as a straight piece and get that all booleaned together, then remap it from a straight piece into its bent form using the Transform > Deform > Flow command rather than using array along curve.

For Transform > Deform > Flow you would create a straight line down the center as the base curve and your bent curve as the target curve, see here for some examples:
https://moi3d.com/4.0/docs/moi_command_reference8.htm#flow

Flow will make the geometry stretch and compress so you won't end up with gaps between pieces like making undeformed exact copies will.

- Michael
From: Robert (ROBERT_S)
3 Sep 2022   [#4] In reply to [#3]
Thank you for information.

You solution helps, but now when i do it with then it make this deformation surface. How i can avoid that i mean follow the curve without deformation.

Thank you.

Robert.


Image Attachments:
hose_3.jpg 


Message 10840.5 was deleted


From: Michael Gibson
3 Sep 2022   [#6] In reply to [#4]
Hi Robert,

re:
> You solution helps, but now when i do it with then it make this deformation surface. How i can
> avoid that i mean follow the curve without deformation.

It's just a fundamental geometric property that a shape traveling along a curve's centerline and offset some distance away from the center will expand or squish together as they go around a bend:



The amount of deformation is greater when the path has a tighter bend in it and when the offset distance from the center line is larger.

So you could either reduce the size of the objects or make the path bend less to reduce that deformation.

If you want to eliminate it then you would not want to use Flow after all and instead do something like mjs writes above - make non deformed objects by using Array curve, then build a tube along the path and boolean the shapes onto the tube.

- Michael

Image Attachments:
robert_flow.jpg 


From: bemfarmer
3 Sep 2022   [#7] In reply to [#4]
The target curve should be representative of a physical curve?
Perhaps some sort of elastica curve, or combination?
Curvature and torsions to be more gentle. (radius of curvature not too small.)

Dryer hose, shopVac hose, flexible vent hose, or flexible exhaust hose of portable Air Conditioner,
all tend to have the "triangular" shape at sharp bends.

Maintain flexibility and avoid kinks.

(A vague answer)

- Brian
From: Phiro
3 Sep 2022   [#8]
Hi,

I think, the solution is to use both possibilities of rigidity of flowing.
The sin of your hose could be flowed with a "none rigid flow" (it will be compressed and stretched) and the rings could be flowed with the rigid option (no compression or stretching) to keep their original aspect.
I test it with a boolean unioned sin to have a single solid without hole .
It works !

A problem could appear if you have a too big curvature in path because rings could can clump together because the physical constraints are not possible to be applied.

Message 10840.9 was deleted


From: krass
3 Sep 2022   [#10]
http://moi3d.com/forum/index.php?webtag=MOI&msg=4722.1
From: Robert (ROBERT_S)
3 Sep 2022   [#11]
Wow guys you are all amazing each of you.

Thank you all for that help and quick response, really appreciate it.

Love that great community here.

Cheers.

Robert.
From: Robert (ROBERT_S)
4 Sep 2022   [#12]
Hello guys,

I tried the methods that you posted here, but i can not figure out how to get the result that i want.:/

Can anyone explain step by step what i must to do exactly?

Apologize me guys im new in MOI.

Thank you for your time.

Robert.
From: bemfarmer
4 Sep 2022   [#13] In reply to [#12]
Hi Robert,
A rough initial outline:

First determine your target curve.
Unwrap target curve to get base curve, using Michaels UnwrapCurve shortcut script.

The result is a straight line base curve, and is the same length as the target curve.
Determine the profile, (or the two profiles) of a unit of the tubing.
Portion 1 is the cylinder section.
Portion 2 is the "cord" torus section. (Or half torus.)
Array portion 1 and portion 2 along the entire length of the base curve.
(Might have to adjust some lengths, or cut off a little cylinder from the finished hose? Just make sure the length of the base curve equals the length of the target curve.
Portion 1 can be a solid hollow tube, with wall thickness.
Portion 2 could be a solid torus, or a solid half torus, or a shell of a half torus...(?) And be a hollow tube.
Run Flow.

By Phiro's method, which I particularly liked, the cylinder might extend the length of the base curve.
The "cord" torus, or half torus, provides strength and support, and anti-kink features, like the wire spiral helix in an exhaust duct.
First flow the cylinder, settings: regular (nonRigid).
Then flow the many cord tori, setting: rigid.
Boolean or some such...

- Brian
From: bemfarmer
4 Sep 2022   [#14] In reply to [#13]
For a vinyl duct hose, the cylinder folds.
For an elastic air hose, part can stretch, and part can shrink, or...
Perhaps the cord half tori should stretch and shrink also.

I wonder if Michael could add a slider, to do a partial percent rigid flow, and partial regular flow?
Somehow multiply the curvature and torsion by a percentage, in the "mapping" algorithm?

- Brian
From: Michael Gibson
4 Sep 2022   [#15] In reply to [#12]
Hi Robert,

re:
> I tried the methods that you posted here, but i can not figure out how to get the result that i want.:/

I think you may need to explain a little more about what type of result you want.

So far you've explained that you don't want gaps, so I thought you wanted the pieces to deform to fill in that gap space.

But then you explained that you don't want deformation.

So I know some of the things that you don't want but I don't know much about what you do want.

Do you want the gaps to be filled by some kind of central tube surface? Or something else? What is it that you want to have where you currently have the gaps?

Can you post the model files for some of the things you tried? That might help to give some tips on what was going wrong there.

- Michael
From: Michael Gibson
4 Sep 2022   [#16] In reply to [#14]
@Brian,

re:
> I wonder if Michael could add a slider, to do a partial percent rigid flow, and partial regular flow?
> Somehow multiply the curvature and torsion by a percentage, in the "mapping" algorithm?

The "rigid" option for flow transforms just a single centroid point and then moves and rotates the object without deforming it, while the regular deformation method deforms all space.

These are different enough that I don't see how it could work to do a slider with a partial result between them, sorry.

- Michael
From: bemfarmer
4 Sep 2022   [#17] In reply to [#16]
Michael, thank you for responding.

I'll do some more google searching, and start a new thread if find anything relevant :-)

Maybe deform space half as much somehow? Scaling target curve? 2D, 3D...

- Brian
From: Michael Gibson
4 Sep 2022   [#18] In reply to [#17]
Hi Brian,

re:
> Maybe deform space half as much somehow? Scaling target curve? 2D, 3D...

I don't see how any of those would be possible.

- Michael
From: Robert (ROBERT_S)
4 Sep 2022   [#19] In reply to [#15]
Hello Michael,

I'm sorry if my explanation confused you.

I just want make the hose as on the image, without that deformation that happen when i follow the curve.

Here is video of my process: https://www.youtube.com/watch?v=PhpuPDRsMrM

Maybe someone can tell me, what im doing wrong and how to avoid the deformation.
From: Michael Gibson
4 Sep 2022   [#20] In reply to [#19]
Hi Robert, you can avoid the deformation if you use the "Rigid" option in Flow. It's a checkbox that appears in the command options area in the upper right area of the main window when you are running the Flow command.

But if you want to have no deformation it may be better to use Array along curve and initially only create the large rib piece and not the smaller pieces that were inset in your video. So something like this:



Then instead of creating the smaller radius pieces directly on the rib, instead make a tube. To do that draw in a circle at the base of the same path curve, then select the circle and run Construct > Sweep to build a sweep surface:




Having that continuous longer tube be used instead of little nubs on each individual piece will not have any gaps:



If your goal is to render this, you can just be done here, there isn't really any need to boolean the pieces together.

Hope this helps,
- Michael

Image Attachments:
robert_hose1.jpg  robert_hose2.jpg  robert_hose3.jpg  robert_hose4.jpg  robert_hose5.jpg 


From: Robert (ROBERT_S)
4 Sep 2022   [#21] In reply to [#20]
Hey Michael,

This is exactly what i need.

I tried it, but if i follow the object with Array - Curve then it follow like this, why is this happening and is not following the curve as on your image?

What are im doing wrong?

Thanks.

Robert.


Image Attachments:
hose_4.jpg 


From: Michael Gibson
4 Sep 2022   [#22] In reply to [#21]
Hi Robert, it looks like you need to rotate your starting object so it is oriented perpendicular to the curve's starting direction.

Your object is oriented in this direction:



But that is not aligned with how your curve is formed, you need to rotate your object so it is in this type of direction before arraying it:



The difference from my example is that the one I showed had the curve start direction going along the z axis direction same as the object's normal:



If you're still stuck please post your .3dm file so I can show you how you need to rotate your object.

- Michael

Image Attachments:
robert_array1.jpg  robert_array2.jpg  robert_array3.jpg 


Show messages:  1-2  3-22  23-29