I have imported an stl mesh (it is a surfboard). I need to accurately rotate or align the mesh so that it is aligned with the x y z axis. To explain: As imported, the board is at roughly a 45 degree angle where I need it vertical. More importantly, I need the apex of the left and right side of the board to be perfectly level as if it were floating in water or balancing on the centerline that runs from nose to tail. Is there a way to accurately achieve this in Rhino?
Thank you,
There is no function in Rhino to analyze the geometry and detect a symmetry plane.Since your object has no flat surfaces relative to the coordinate system, the 3 point alignment is useless.
You will have to eyeball the alignment. What might help as a reference is to create a mirror copy of the object in a different color once you have established the approximate symmetry plane. Then you might be able to tweak the alignment based on the difference you see between the original and the mirror copy.
just use Rotate or Rotate3D? you also have Orient if the rotation is slightly more complex. if its fully wild use Orient3Pt. i dont see any issues otherwise if you know where the waterline is. i hope am not missing anything.
I think Stacy is asking for hydrostatic analysis for the waterline. I’m not sure if there is a Rhino plugin that would be able to do that. Others here may know of applications that can do the hydrostatics.
hmm no idea, but we have the command Hydrostatics
I think the hydrostatics function in Rhino requires that the waterline is known.
Yes, but not in one-step.
I import and align meshes of boat hulls. and several iterations of alignment are needed. (I use x axis for longitudinal, y axis for transverse and z axis for vertical.)
Work in ortho views, not in perspective view.
Move the mesh so it close to the origin.
Start in the top view. Rotate the mesh until it is close to being aligned fore/aft. Don’t try to make it aligned exactly in this step.
Switch to the right view. Rotate the mesh until it is close to horizontal in this view (centerplane parallel to the z axis).
Switch to the front view. Rotate the mesh until it is close to horizontal in this view (waterline parallel to the x axis).
Move the mesh so that the centerplane is close to the xz plane and the height and fore-aft location are close to the final location.
Top view - rotate to refine alignment. Move to align with the x-axis.
Right view - rotate to refine alignment. Move to center on the z axis.
Front view - rotate to refine alignment. Move to desired height.
Repeat last three steps until desired accuracy is obtained.
David, is the waterline approximated by guesstimate, or is there a more precise way?
I usually work with meshes created using photogrammetry of a physical vessel. These meshes using have a very fine resolution (millions of faces for the outer surface of a hull) and are photo textured. Working in renderd mode I can locate points very accurately. The limitiation on precision is usually the accuracy of the phycial hull. There is almost always some discernable twist and side to side assymetry. Then the final locations becomes a matter of judgement.
“Waterline” can have different definitions depending on the context including:
Design waterline as specified on a drawing or 3D model.
Max draft waterline(s) which satisfy regulatory requirements
Top of the bottom paint or a stripe painted on the hull.
“Scum” line if the vessel has been floating stationary.
The waterline resulting from a specified displacement and trim angle.
The waterline resulting from a specified displacement and CG location.
The waterline the vessel is floating at in its current condition.
Etc.
When I position a mesh after importing it the final location depends on what I or the customer desires and the available information.
Frequently it is based on matching a painted waterline and/or scum line.
If the model is to be compared to a drawing then it will be positioned to the drawing.
If the hull is symmetric fore/aft then it will usually be leveled fore-aft.
If the model is to be used by a builder doing repairs/renovations/modifications then the mesh may be positioned to be consistent with how the physical boat is or will be positioned during the work. Frequently this is based on making bulkheads vertical.
Determining waterlines based on hydrostatics is a different matter. I currently use Orca3D - input the hydrostatic conditions and constraints and Orca3D will create a plane at the corresponding location. In the past I’ve used the Rhino Hydrostatics command with a spreadsheet I created, and iterate the waterline height (easy using Hydrostatics - just change the input value), and trim angle (requires iteratively rotating the model if trying to align the center of buoyancy with a specified CG location).
Thank you for all the helpful quick responses… As said above, the challenge i’m having is a mesh like this has no planes to align with the 3 axises… If my “surfboard” had a stringer, I could align it with an axis. Likewise, if there was a curve at the middle point between the deck and bottom running from nose to tail that would help but I don’t have those things. In terms of hydrostatic data, I don’t need that for what i’m doing, but it is always interesting to me to see how people apply rhino in different industries. I am importing the .stl into software tailor made for surfboard design and cnc… The software reads data and interpoolates “fitts” curves to create slices at intervals along the board. Surfboards shaped by hand are much like boats in that despite best efforts for symmetry, the left and right sides are often off… if I can get the .stl “level”, I can interpret the right and left sides to tweak the design. In terms of hydrostatics, the software can calculate buoyancy data. Rhino is much, much more full featured, but this software does one thing well, which is create fluid surfboard designs based on scan import data, or imputed dimensions. Thanks again for all the comments…
i still dont see what is holding you up from manually rotating the mesh with the rotate or rotate 3d command till its perfectly aligned with all 3 axis. hold shift to rotate and it will line up with either axis. otherwise post a sample mesh.