POV-Ray : Newsgroups : povray.unofficial.patches : Re: preview of deform patch (53 kbu) : Re: preview of deform patch (53 kbu) Server Time
2 Sep 2024 00:17:46 EDT (-0400)
  Re: preview of deform patch (53 kbu)  
From: Wlodzimierz ABX Skiba
Date: 12 Dec 2000 04:57:21
Message: <3a35f681$1@news.povray.org>
Chris Huff wrote in message ...
> > > I would also use "weighted_normals" or "weight_normals" instead of
> > > "normal_weighted"
> > why ? this groups parameters for normal calculation ?
>
> You tell POV to weight the normals or to use weighted
> normals, not to use normals weighted.

Ok, thanks, I'll tell it to POV :-)


> your patch looks like it could be very fun just to play
> around with. :-)

I hope I do it not only for fun :-)
only with twist just imagine "airscrew", "drill"

> > what about deformations where they are good described only in part of
> > space ?
> > turbulence and twist is calculable in evry point but what about
> > placing along spline ?
>
> I'm not sure what exactly you mean...

I thought of your proposition and looked at the source of warps whole night and
finnaly I think there is big misunderstand, You Chris and Christoph Hormann
think that I deform point only ones but every deformation which I need must be
bi-directional/reversable/invertable
well defined deformation f(x,y,z) must have brather or sister as undeformation
g(x,y,z) where:
A=f(B) and B=g(A)
perhaps I don't understand warps source but I think this is hardly (if possible)
to inverse uniformly all warps
as I see twisting is bad example becouse is well defined for whole space and you
omit bi-directioning of calculation
I try explain again:
I start with patch becouse of bad normals in isosurface
I discover that normals of deformed object can be aproximated insted of
calculating

Here is symbolic notation of my method:

take depth1 and depth2 for container or bounding box
take function deform and undeform (opposite to deform)
for i=depth1 to depth2 step accuracy
  point1=evaluate_ray(trace_ray,i)
  point2=evaluate_ray(trace_ray,i+accuracy)
  pointA=undeform(point1)
  pointB=undeform(point2)
  deformed_ray=create_ray_beetwen(pointA,pointB)
  pointC=find_every_intersection(deformed_ray,base_object)
  for every pointC beetween pointA and pointB
    normal=normal(base_object,pointC)
    array[normal_accuracy_int] = neighbouring points
                                 around pointC
                                 distributed evenly on surface
                                 perpendicular to normal
    point3=deform(pointC)
    deformed_array=deform(each of neighbouring points)
    calculate (weighted) normal from deformed neighbours
    put on stack of intersections point3 and normal
  end for
end for

is inverted function of turbulance and/or warps builded in povray

> If you want only part of the object to be deformed,
> you should probably use
> a union of a deform object with ordinary objects.

with wasting memory if this could be omited ?
I'll consider this behavior

> BTW, multiple deformations would also be useful...

yes, I though of it

> deform {
>    box {<-1,-1,-1>, < 1, 1, 1> texture {Texture}}
>    deformation {turbulence 0.2}
>    deformation {twist y, 8}
>    deformation {black_hole ...}
>    accuracy 0.05
>    normal_accuracy 3, 0.01
>    weighted_normals on
> }

hmm, but parameters of accuracy should be defined for every deformation becouse
every type of deformations could have "density" of changing, "denisty" of
turbulencing
than perhaps

deform {
  box {<-1,-1,-1>, < 1, 1, 1> texture {Texture}}
  deformation {
    turbulence 0.2
    accuracy 0.1
    weighted_normals on
  }
  deformation {
    twist y, 8
    accuracy 0.5
  }
  deformation {
    black_hole ...
    accuracy 0.01
    normal_accuracy 10, 0.2
    weighted_normals on
  }
}

> Christopher James Huff

ABX with doughter at zuza.org


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.