An Efficient Brush An Efficient Brush Model for Model for
Physically-Based Physically-Based 3D Painting3D PaintingNelson S.-H. ChuNelson S.-H. Chu
Chiew-Lan TaiChiew-Lan Tai
Benefits Over Existing Benefits Over Existing ModelsModels
Brush flatteningBrush flattening Bristle spreadingBristle spreading Plasticity of wetted brushesPlasticity of wetted brushes Resistance of paper surfaceResistance of paper surface
Block DiagramBlock Diagram Artists use a brush Artists use a brush
connected to several connected to several sensors to paintsensors to paint
The movements of The movements of the brush are the brush are interpreted by the interpreted by the brush, ink, and brush, ink, and paper modelspaper models
The brush and The brush and strokes are the strokes are the rendered on the rendered on the screenscreen
User InterfaceUser Interface
Sensors attached Sensors attached to real brush to to real brush to provide inputprovide input
Ultrasound Ultrasound receivers and receivers and buzzer provide 6 buzzer provide 6 degrees of freedomdegrees of freedom
Gyroscopes provide Gyroscopes provide brush orientation brush orientation informationinformation
Actual BrushActual Brush
Made of animal hairsMade of animal hairs Kernel is hard, outer layers are softKernel is hard, outer layers are soft Good brushes are elasticGood brushes are elastic
Tip is less stiff than the rootTip is less stiff than the root
Brush SkeletonBrush Skeleton Brush is modeled by line Brush is modeled by line
segmentssegments Spine nodes are made up of Spine nodes are made up of
consecutively shorter line consecutively shorter line segmentssegments
This makes the brush more This makes the brush more flexible at the tipflexible at the tip
Lateral nodes are attached to Lateral nodes are attached to each spine nodeeach spine node
Connection points are modeled by Connection points are modeled by bend springsbend springs
Lateral line segments are Lateral line segments are modeled by stretch springsmodeled by stretch springs
Columns of spine nodes and Columns of spine nodes and lateral nodes represent groups of lateral nodes represent groups of bristlesbristles
Tuft Cross SectionTuft Cross Section
Spine nodes are represented at cylindrical Spine nodes are represented at cylindrical groups of bristlesgroups of bristles
Lateral nodes are elliptical groups of bristlesLateral nodes are elliptical groups of bristles Entire tuft is modeled with ellipses at each Entire tuft is modeled with ellipses at each
spinal nodespinal node
Brush SurfaceBrush Surface
Lateral nodes Lateral nodes allow the allow the simulation of simulation of bristle spreadingbristle spreading
An alpha map is An alpha map is used for fine used for fine bristle splitting bristle splitting effectseffects
Currently a static Currently a static alpha map is usedalpha map is used
Brush DynamicsBrush Dynamics
Exact Newtonian physics is not practicalExact Newtonian physics is not practical Instead, energy minimization is usedInstead, energy minimization is used
An energy function is set up for the system and its An energy function is set up for the system and its steady state is determined by finding a local energy steady state is determined by finding a local energy minimum numerically.minimum numerically.
The state of the system at the previous time step is The state of the system at the previous time step is used as the new initial valueused as the new initial value
This is a ‘static contained minimization This is a ‘static contained minimization problem’problem’
Sequential Quadratic Programming (SQP) is Sequential Quadratic Programming (SQP) is used to solve the energy minimization problemused to solve the energy minimization problem
Energy MinimizationEnergy Minimization
Initialize (θ f , φ f ) = (θ i , φ i ) Determine if any nodes penetrate the
paper Set minimization constraints for those
nodes Solve energy minimization problem for the
state of the system and update accordingly
Energy FunctionsEnergy Functions E = Edeform + Efrict Edeform has a spine and lateral component, each
of which have bend and stretch components BendEnergy(θ)=kbend|θ|^3 Estretch(d,θ)=kstretch|d-(r+s(θ))|^3
d=distance from node, r=radius of node S is a function of the bend angle
Efrict= u Sum(F*(kf|Xpar|+(1-kf)|Xperp)) F=normal force, kf=weighting value Xpar/perp=distance moved parallel and
perpendicular
PlasticityPlasticity Brushes have different Brushes have different
‘plasticities’‘plasticities’ Type of brushType of brush Wetness of brushWetness of brush
Plasticity is the amount by which Plasticity is the amount by which the brush returns to its original the brush returns to its original shapeshape
BendEnergy(θ)=k|θ-p|^3 where: p=min(θ’, alpha)
Alpha changes according to wetness of brush, larger alpha corresponds to more plasticity
Ink DepositingInk Depositing
Ink and moisture information is stored at Ink and moisture information is stored at each nodeeach node
The brush footprint is the orthogonal The brush footprint is the orthogonal projection of the penetrating portion of projection of the penetrating portion of the brush onto the paperthe brush onto the paper
Ink is either subtracted from the tuft upon Ink is either subtracted from the tuft upon depositing, or maintained to allow depositing, or maintained to allow continuous paintingcontinuous painting
If the ink is subtracted the tuft alpha map If the ink is subtracted the tuft alpha map is modified too reflect thisis modified too reflect this
SpecsSpecs
System written in Object Pascal System written in Object Pascal using Borland Delphi 6using Borland Delphi 6
Runs real-time at 25 frames per Runs real-time at 25 frames per second on a 1GHz Pentium-III with a second on a 1GHz Pentium-III with a GeForce2 Pro graphics cardGeForce2 Pro graphics card
Most time frames require less then Most time frames require less then 10 SQP iterations10 SQP iterations
ResultsResults
Top Related