POV-Ray : Newsgroups : povray.binaries.images : Rust : Re: Rust Server Time
28 Nov 2023 05:26:03 EST (-0500)
  Re: Rust  
From: Chris R
Date: 6 Nov 2023 09:25:00
Message: <web.6548f671afcbb1dda2e6a155cc1b6e@news.povray.org>
"Mike Miller" <mil### [at] gmailcom> wrote:
> "Chris R" <car### [at] comcastnet> wrote:
> > I decided to start a project with more of a story line, and was thinking back on
> > Stanislaw Lem's book "Cyberiad" as inspiration.  I melded that with the
> > sculpture, "The Thinker", and cogito ergo sum, and came up with this scene.
> >
> > My robot, "Cogito", has been imprisoned on a planet in Lem's world and has been
> > contemplating his errors for so long that he has rusted in place and doesn't
> > even notice that the door is standing open.
> >
> > The model for Cogito is completely parameterized (using dictionaries!) so I can
> > pose him however I want if I decide to let him get up from his stoop and escape.
> >
> > I started modeling the rust using macros I created for modeling painted
> > surfaces, where the paint may show part of the underlying surface and has its
> > own surface texture independent of the object.  (This technique uses an
> > isosurface function for the object, and then extends that function with a paint
> > thickness function for the paint as a separate object.)  Since the rust had more
> > open space, the renders were expensive and I didn't like how they looked.
> >
> > So, I started modeling the rusted areas using a pigment pattern applied to the
> > basic shape function to get the raised areas, and then using that same pigment
> > pattern in the object's texture{} to differentiate the base object texture from
> > the rust texture.  I used this on Cogito himself, all of the iron bars, the
> > chain, and the lock.
> >
> > I also used the pigment_pattern approach to apply texture to the walls and the
> > stoop to model where the stone was wet from a leaky roof and the window opening.
> >
> > The attached render is using a moderate anti-aliasing setting, which seems to
> > work fine given the rough nature of the scene surfaces, and is not using
> > radiosity.  (I will need a few long days to do that, so maybe later.)
> >
> > -- Chris R
>
> Nice job Chris,
> I love scene and the back story. The rust material is great. Did you post the
> scene code? I'd love to see the parameterized / dictionary setup for posing. I'm
> just getting back to this forum so sorry for the late replies on all the cool
> work being done here.
> Mike.

Thanks, Mike.  I haven't posted the scene yet.  I have such a network of nested
tools I include that it takes a while to get everything together into a package.
 I can post the code for setting up the posing, as that is pretty simple:

//=============================================================================
// Cogito Configurations
//
#declare Cogito_side_left   = 1;
#declare Cogito_side_right  = -1;

#macro Finger_config_create()
    #local _config  = dictionary {
        .distal_rot:    <0,0,0>,
        .middle_rot:    <0,0,0>,
        .proximal_rot:  <0,0,0>
    }
    ;

    _config
#end

#macro Hand_config_create(Side)
    #local _config  = dictionary {
        .side: Side,
        .thumb: Finger_config_create(),
        .thumb_metatarsil_rot:  <0,0,0>,
        .index: Finger_config_create(),
        .middle: Finger_config_create(),
        .ring: Finger_config_create(),
        .pinkie: Finger_config_create()
    }
    ;

    _config
#end

#macro Arm_config_create(Side)
    #local _config  = dictionary {
        .side:  Side,
        .arm_rot:   <0,0,Side*90>,
        .elbow_rot: <0,0,0>,
        .wrist_rot: <0,0,0>,
        .hand:  Hand_config_create(Side)
    }
    ;

    _config
#end

#macro Leg_config_create()
    #local _config  = dictionary {
        .leg_rot:   <0,0,0>,
        .knee_rot:  <0,0,0>,
        .ankle_rot: <0,0,0>
    }
    ;

    _config
#end

#macro Torso_config_create()
    #local _config  = dictionary {
        .waist_rot: <0,0,0>
    }
    ;

    _config
#end

#macro Head_config_create()
    #local _config  = dictionary {
        .neck_rot: <0,0,0>,
        .head_rot: <0,0,0>,
        .left_eye_glow: 0,
        .right_eye_glow: 0,
        .left_ear_rot:  <0,0,0>,
        .right_ear_rot: <0,0,0>
    }
    ;

    _config
#end

#macro Cogito_config_create()
    #local _config  = dictionary {
        .left_leg:  Leg_config_create(),
        .right_leg: Leg_config_create(),
        .left_arm:  Arm_config_create(Cogito_side_left),
        .right_arm: Arm_config_create(Cogito_side_right),
        .torso:     Torso_config_create(),
        .head:      Head_config_create()
    }
    ;

    _config
#end

// End Cogito Configurations
//=============================================================================

#local _config = Cogito_config_create();
#local _config.head.neck_rot = <0, 45, 0>;

One of the side projects that will pull me away from this for a while is to
clean up some of my most-used libraries so I can post them with tutorials here
without needing my entire tree of POV code.

-- Chris R.


Post a reply to this message

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