motivation - according to Steve, I'm a moderately obsessed with ferrets - need a way to make involve ferrets in my thesis 2 ---------------------------------------------------------------------------- outline - will talk about background - current limitations of pasting - what I will do and how I hope to overcome some of those limitations 3 ---------------------------------------------------------------------------- what is pasting - add detail without increasing surface complexity - map the feature domain into base domain - the map control points via coordinate frames on the surface 4 ---------------------------------------------------------------------------- pasting variations - projective - project corners of feature domain onto a base - end up with a skewed rectangle domain for feature - cylindrical - paste last 2 layers of control points from a cylinder - map end curves to circle in domain 5 ---------------------------------------------------------------------------- problems with pasting - nice things - sort of intuitive, like modelling with clay, you stick bits of it together - ferret model from old project, not so great - for one, didn't spend a lot of time making it - you can only stick rectangular or circular domains - with a projective paste, it is a bit better, but only get skewed rectangles in your domain - the features distort greatly - want to deal with these problems. 6 ---------------------------------------------------------------------------- what I need to make a ferret - I need a cylinder thing for the body, and legs, and tail - bumps for ears etc - the cylinder need to be flexible, not just a straight tube - must be able to join the tube ends smoothly with each other - that is the point of pasting, after all - to close the ends of the cylinder smoothly 7 ---------------------------------------------------------------------------- what I want to do - put a cylinder around a 3D spine so it is bendable - attach by pasting, there is some math, but mostly UI - cap the cylinder to mend the holes on the end, involves trimming 8 ---------------------------------------------------------------------------- a cylinder with a spine - make a 3D spline curve - put a co-ordinate frame at the points of maximum influence by control points - define the cylinder's control points as offsets from the co-ordiate frames - frenet frames - co-ordinate frame independent of each other - flips at inflection points, causing twisting - rotational minimizing frames - co-ordinate frames dependent on previous frame - can't do a local update - frames still changes drastically when spine curve is editted 9 ---------------------------------------------------------------------------- pasting UI - pick a point on the base surface - attached a co-ordinate frame to it base on surface tangents - take the up direction and align it with the cylinder spine - only last layer of control points will be pasted - so can move the cylinder closer or further away from the paste point - but all points have to be above the surface for a successful paste 10 ---------------------------------------------------------------------------- pasting - then we project each control point along the paste direction - where the projected lines intersect with the base surface - that is where the new control points will be - for a C0 paste, all we need is to stick the one layer of cps - note that the cylinder end is not a convex curve - also note that we are pasting over the boundary - usually you need something special to handle this if you are pasting via domains - for a C1 paste - duplicate the last layer of control points but make it a bit wider - paste this new outside layer as in a C0 paste - for each cp on the inside layer, paste it on the tangent plane at the location of the corresponding outer point - this gives a smooth paste - C2, duh.. 11 ---------------------------------------------------------------------------- what to trim - once we paste need to cut away parts of the base surface - usually we make the outer curve larger, and cut a hole in the middle - Houdini has a projective and rectangular domain paste - but this is a simulation of my pasting methods - if make the "outer" layer smaller, and keep the inside of the base - we have a cap - generally not easy to cap a cylinder with a non-convex cross section 12 ---------------------------------------------------------------------------- a different way to paste a bump - extend this to patches - define the patch from a central point - paste this point and project edge points - can move the outside control points so the patch is not rectangular 13 ---------------------------------------------------------------------------- handling hierarchical pasting - tree is the simplest - DAG allows a cylinder to straddle boundaries - this is sort of messy because a cylinder has 2 ends you can paste - patches only have one side to paste - with cylinders, it is possible to get cycles - what are the logical restrictions? - it should be possible, since only the ends of the cylinder change when pasting - if one side of the cylinder is pasted, how to modify the spine when you pasted the other side (paper by Bartels etc..) 14 ---------------------------------------------------------------------------- what does this mean - the cylinder spine makes things easily adjustable - we can have a non-circular, no rectangle paste - don't have to worry about domains quite as much, since this is world space - no special cases for domain boundaries, rotations etc - less feature distortion, since only base layers are modified - can make ferrets and other fun shapes 15 ---------------------------------------------------------------------------- more things to worry about - texture mapping - fur, - converting to mesh - I'm sure there is more