Scan to cushion steps ---------------- INITIALIZATION 1. Free move 2. Change pivot point to a pupil center (manually placed) 3. Roughly match rotation and translation to the reference point RIGHT EYE CENTER 1. 2x new plane 3 points (1 w/points around iris, 1 w/points around pupil) 2. New axis 2 planes - Ensure axis runs through pupil center at some angle, else redo step 1 3. New plane 3 points (points vertically along pupil center) 4. New point @ edge & plane 5. Not centered? - New axis 2 points (point from step 4 + point along translation vector to center) - New plane 3 points (horizontally along eye center. 1 point should be the intended center point) LEFT EYE CENTER (same steps) ROTATE TO ORIGIN 1. New axis 2 points (both pupil centers) "Pupils" 2. New plane 3 points (both pupil centers + origin) 3. Sketch on new plane 4. Project both pupil centers & draw a line between them 5. Create a rectangle where 1 edge aligns with said line's centerpoint 6. Extrude that profile 7. New axis 2 planes from XY plane + [extruded face perpendicular to Pupils axis] 8. Rotate [scan mesh, extruded body, PupilR, PupilL, Pupils axis] along the step 7 axis - Rotation degrees should be the diff as shown when selecting the planes in step 7 9. Translate mesh COMPONENT point-to-point: right pupil -> right megacant ref circle FACE CENTER 1. Check distance to center plane for each pupil center & calc the diff 2. Translate all along Pupils axis by [step 2 result / 2] 3. New point @ edge & plane (XY, Pupils axis) REORIENT 1. Check angle of Pupils axis vs. plane parallel to face (YZ) - Make them the same if not already 2. Same for Pupils axis vs. horizon plane (XZ) 3. Hide MegaCant 4.5 references, mesh construction bodies EXPERIMENTAL - GENERATE FACE REF SOLID 1. Duplicate FaceRefCyl into mesh component - Position it so key area of the face is nearest to all curvature 2. UnWeld to remove the back, keeping the key area intact 3. Subdivide to add detail (length faces 1, width faces 2) 4. UnWeld to remove a rectangle around the highest/deepest portion of the nose 5. Pull the form to the scan mesh (surface points for highest accuracy) 6. Thicken form by 1mm to get ref solid !!!OLD-IGNORE!!! BUILD CUSHION TRANSLATION NORMALS (ALT option: duplicate an existing set and translate p2p for the active mesh) 1. New axis 2 points from about 1in fwd from where the top of the ear connects to head 2. New point @ E+P via step 1 edge and REF HMDMid plane 3. Duplicate & offset step 2 point along CushZ by 5mm 4. New axis 2 points from step 2 point to step 3 point 5. Rotate step 1 axis around step 4 axis by 90deg 6. Duplicate that axis at 15deg increments around step 4 axis. end with 9 total, 4 per side SPLINE POINT GROUPS A. A (static), B (static), 1 (first rotation point) B. 2-4 (static; rotate around 2) C. 5, 6, 7, 8 D. 9-11 (static; rotate around 9) E. 12, 13, 14, 15 F. 16-18 (static; rotate around 16) G. 19, 20, 21, 22 (restricted angle) H. 23-27 (static; rotate around 23) CREATE NEW CUSHION STARTER 1. COPY [REF]TemplateCushion 2. Right click the new component -> !!!***MAKE INDEPENDENT***!!! 3. Rename the component to "[Name] Support" 4. Delete FaceRefCyl 5. Activate face mesh component ALIGN NEW CUSHION 1. Create a reference plane around center of forehead where cushion would overlay - Temporarily make AVPCushTest visible for reference - Derive from midplane of 2x 3-point planes 2. Rotate COMPONENT to match rotation of CushTopPlane to rotation of step 1's plane - Activate support plate component before performing rotation - Involves a new axis 2Pl 3. Ensure path centerpoint distance to face is ~5.875mm (or 4.875mm to face ref solid) - !! moving COMPONENT in CushTopPlane direction - Use DistMarkerMID and the 2x neighboring DistMarkers to visually judge this - (Note: This is half of the 0.75mm cushion plastic + 3mm cushion max compression depth + (5.0 / 2) cushion compressable depth, MINUS 1mm. Max cushion depth is 8mm) 4. Adjust COMPONENT position (Z plane) so cushion shape frames eyes well 5. Repeat step 3 6. Ensure path centerpoint distance to [REF] "X" plane is 0 - !! moving COMPONENT using [REF] "X" plane as vector ADAPT PATH TO FACE MACRO GEO 1. Make the scan mesh unselectable 2. Collapse the "[Name] Support" COMPONENT for easier visibility to selection sets 3. Switch to quadviews. They should be: - "Flat" view of the spline path for selecting DistMarkers and points - Extremely close view of the current spline point used for rotations - Medium zoom from backside of scan mesh to view DistMarker interference while rotating - Odd angle from above face, for best view of path transformations 4. Performing rotations for most path points along the spline... - Very first point should be ***third from center***. Vector between first two must be maintained to ensure a clean connection between the halves - Select all DistMarkers (and the PathProfileEnd?) from the first point onward, then initiate the move 6. FIRST rotation should be around the preceding DistMarker's perpendicular axis - While adjusting rotation, eyeball to ensure first moving DistMarker does not pierce the scan mesh - NOTE the rotation value(s) to repeat for the second rotation 7. SECOND rotation targets all spline points corresponding to the previously selected DistMarkers - When done, hide the DistMarker which hosted the used axis 8. When reaching a group of yellow-bottomed DistMarkers, all should be rotated simultaneously around the preceding DistMarker axis - The last marker in the group will server the NEXT rotation action's axis 9. When reaching the green-bottomed DistMarkers, all involved rotations should not exceed 2.0deg - Possible minor exception to the very last rotation, which is responsible for the contact of the entire final yellow group 9. Ultimately, ensure each point's distance to face is ~5.875mm - Try to ensure entire path is not too different than MAX value below PATH DISTANCES TO MAGNET CENTER POINTS |OO1: 24.04mm |O1: 72.45mm |O2: 120.807mm (MAX - 64.436) |OO2: 169.396mm (MAX - 15.847) |MAX: 185.243 (185.096 w/clustered points deleted) ------------------------------- POSITION MAGNET MOUNDS, PathProfileEnds 1. Create points *and* planes along path. Use magnet reference points above 2. Repeat the following steps for each magnet, 1 at a time: - Create new axes 2Pl using O*Mid and O*rot (the new plane) - Rotate O* body + O*path + O*swiv (2p axis-->angle diff between old midplane and new midplane) - Translate O* body + O*swiv using p2p (old midpoint -> new midpoint) 3. When doing step 2 for PathProfileEnds, must create an offset plane from the sketch to get the angle diff 3. Check rotation of PathProfileEnd to ensure it's roughly parallel/tangential to underlying face geometry CONSTRUCT SUPPORT GEO X. EXPERIMENTAL: Create 2x per side (4x total) supplemental loft sketches at each magnet midplane. Width of the profiles (1x cushion, 1x support) should be dictated by formula: - 18 - ((18-11) * positionalPercentAlongPath) - Rotate the supplemental profiles to achieve equidistance from underlying scan geo 1. Loft the new cushion plate form (only need the inner edge) - Change "Length Spacing" option to "Curvature" - Combine left and right forms & adjust edge positions for continuity 2. Ensure proper height of each magnet mound (0.4mm max at center) - Magnets will need rotated. Use O*swiv axes 3. Loft the cushion support solid 4. Boolean mound cavities & ensure reasonable tolerances (0.2mm deep, 1.4mm dia) 5. Boolean magnet cavities inside the mound cavities using circle points on the recessed surface -> cylinder tool (3.2mm x 2.1mm) CREATE NEW ADAPTER STARTER 1. COPY [REF]AdapterStarter 2. Right click the new component -> !!!***MAKE INDEPENDENT***!!! 3. Rename the component to "[Name] Adapter" 4. Activate new component 5. Copy the WIP custom support body into the new component 6. Rename it to "CustomSupport" and hide for now PREP SUPPORT PROFILES 1. Create a new sketch on ZY plane 2. Project the custom support's underside profile onto it 3. Convert all 4 paths to editable 4. Remove the 2x nose end lines 5. Connect the new open ends with tangent arcs 6. Offset the innermost loop by 5mm inward 7. Offset the outermost loop by 5mm outward 8. Project the input cuts into the sketch 9. Finish sketch BUILD ADAPTER FROM STARTER AND CUSTOM SUPPORT 1. Unhide StarterExtenderL/R/Top 2. Create a plane 3 points from the Starter's right nose area curve to the farther UNDERSIDE nose corner of CustomSupport - Use said plane to Split Body on StarterExtenderR 3. Repeat step 2 but for the left side 3. Extrude the lower inner profile into a new body - Ensure it fully intersects StarterExtenderL/R 4. Combine said new body with StarterExtenderL/R in intersect mode, keeping tools 5. Extrude the lower middle profile to cut off and delete the extra outer material of StarterExtenderL/R 6. Unhide CustomSupport 7. Extrude the upper outer profile into a new body - Ensure it fully bridges the space between StarterExtenderTop and CustomSupport's underside 8. Extrude the upper outer profile to cut off and delete the extra outer material of StarterExtenderTop 9. Split Body on the top and bottom of the upper support bridge (prev. step's new body) - Will likely need to split it down the middle first (using plane 3 points) - All the faces used for this will need converted to forms to be splittable - For the topside, translate the splitting tool forms 0.5mm upward (X axis) to ensure smooth combination later 10. Use the lower InputCuts to split face underneath the CustomSupport (for lofting to) 11. Loft the tops of the extender slivers created in step 3 to the underside of the CustomSupport (new body) - Delete the sliver bodies once the loft bodies have been generated 12. Combine all the previous steps' generated bodies into the CustomSupport and Starter bodies - May require performing combinations one layer at a time (start with extenders + starter, work way up) - The body connecting StarterExtenderTop to CustomSupport might need .1mm Press Pull on the inner or outer walls - Ensure CustomSupport's magnet cavities have no interference from the combining bodies, else cut etc. as needed CREATE INPUT SHROUDS 1. Once all StarterExtenders are combined into the base frame, Split Face on both halves using the outer surface of the respective InputShroudL/InputShroudR 2. Sweep the resulting profile so it extends past the custom support surface (create temporary new body) - The sweep path should be an edge leading from a profile vertex up to the custom support structure 3d. Bark bark bark! Arf arrrruuff :3~ 3. Translate and Press Pull the temp body such that the top surface is fully obscured by the custom support structure - Translation vector should be one of the body's own outward-pointing edges 4. The temp body likely won't span the entire input gap. Split it on the side that falls short - Create 3po-plane to use for the split 5. Distance the severed end of the fallen-short side (translate using linking edge of its other half) - Get it to where its inner face roughly intersects the edge where the existing wall meets the support structure underside 6. Loft the two temp body sides back together 7. Press Pull the temp body to bring the top corners of its "arm" ends just inside the walls - Keep the arms as long as possible 8. Loft the top profile of the temp body + the profile that was originally used to create the temp body (--> new body) 9. Delete the temp body 10. Combine the new body (actual input shroud geometry) into the adapter structure - Clean up any outstanding geometry mess - Fillet the edges around it for more seamless integration