|
|
|
|
|
|
| |
| |
|
|
From: Tor Olav Kristensen
Subject: Source code for "Using functions to distort images"
Date: 21 May 2006 18:48:59
Message: <4470ee5b@news.povray.org>
|
|
|
| |
| |
|
|
See my posts to povray.binaries.images 20. May 2006:
"Using functions to distort images"
http://news.povray.org/povray.binaries.images/thread/%3C446f8654%40news.povray.org%3E/
http://tinyurl.com/zpyk6
Tor Olav
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
// Copyright 2006 Tor Olav Kristensen
// http://subcube.com
// Using functions to distort image
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
#version 3.6;
#include "functions.inc"
global_settings {
ambient_light color rgb <1, 1, 1>
// assumed_gamma 1.0
}
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
#macro BiColorPigment(Fn, Color1, Color2)
pigment {
function { Fn(x, y, z) }
color_map {
[ 0 color Color1 ]
[ 1 color Color2 ]
}
}
#end // macro BiColorPigment
#macro FunctionPigment(FnR, FnG, FnB)
#local PigmentR = BiColorPigment(FnR, color red 0, color red 3)
#local PigmentG = BiColorPigment(FnG, color green 0, color green 3)
#local PigmentB = BiColorPigment(FnB, color blue 0, color blue 3)
pigment {
average
pigment_map {
[ PigmentR ]
[ PigmentG ]
[ PigmentB ]
}
}
#end // macro FunctionPigment
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
#declare ImageFn =
function { pigment { image_map { "Image.png" } } }
#declare FnA = function { ImageFn(x, y, z).red }
#declare FnB = function { ImageFn(x, y, z).green }
#declare FnC = function { ImageFn(x, y, z).blue }
#declare A = 1.5; // Amplitude
#declare F = 1.0; // Frequency
// Two (different) noisy functions.
#declare N_FnX = function { A*(f_agate( 0 + F*x, F*y, z) - 0.5) }
#declare N_FnY = function { A*(f_agate(100 + F*x, F*y, z) - 0.5) }
box {
-<1, 1, 1>/2, <1, 1, 1>/2
texture {
FunctionPigment(
function { FnA(x + N_FnX(x, y, z), y + N_FnY(x, y, z), z) },
function { FnB(x + N_FnX(x, y, z), y + N_FnY(x, y, z), z) },
function { FnC(x + N_FnX(x, y, z), y + N_FnY(x, y, z), z) }
)
finish { ambient color rgb <1, 1, 1> } // Adjust brightness here
translate -<1, 1, 0>/2
}
scale <4, 3, 1> // Adjust image aspect ratio
}
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
camera {
orthographic
location -3.1*z
look_at 0*y
}
background { color rgb <1, 1, 1> }
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
Post a reply to this message
|
|
| |
| |
|
|
From: Tor Olav Kristensen
Subject: Re: Source code for "Using functions to distort images"
Date: 21 May 2006 19:32:14
Message: <4470f87e@news.povray.org>
|
|
|
| |
| |
|
|
Tor Olav Kristensen wrote:
>
> See my posts to povray.binaries.images 20. May 2006:
> "Using functions to distort images"
>
>
http://news.povray.org/povray.binaries.images/thread/%3C446f8654%40news.povray.org%3E/
>
> http://tinyurl.com/zpyk6
Here's a more "macrofied" version of the source code.
Tor Olav
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
// Copyright 2006 Tor Olav Kristensen
// Use of functions to distort image
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
#version 3.6;
#include "functions.inc"
#include "colors.inc"
global_settings {
ambient_light color White
// assumed_gamma 1.0
}
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
#macro BiColorPigment(Fn, Color1, Color2)
pigment {
function { Fn(x, y, z) }
color_map {
[ 0 color Color1 ]
[ 1 color Color2 ]
}
}
#end // macro BiColorPigment
#macro FunctionPigment(FnR, FnG, FnB)
#local PigmentR = BiColorPigment(FnR, color red 0, color red 3)
#local PigmentG = BiColorPigment(FnG, color green 0, color green 3)
#local PigmentB = BiColorPigment(FnB, color blue 0, color blue 3)
pigment {
average
pigment_map {
[ PigmentR ]
[ PigmentG ]
[ PigmentB ]
}
}
#end // macro FunctionPigment
// Note that this macro only works with PNG-images
#macro DistortedImagePigment(ImageFileName, D_FnX, D_FnY)
#local ImageFn =
function { pigment { image_map { png ImageFileName } } }
#local FnA = function { ImageFn(x, y, z).red }
#local FnB = function { ImageFn(x, y, z).green }
#local FnC = function { ImageFn(x, y, z).blue }
FunctionPigment(
function { FnA(x + D_FnX(x, y, z), y + D_FnY(x, y, z), z) },
function { FnB(x + D_FnX(x, y, z), y + D_FnY(x, y, z), z) },
function { FnC(x + D_FnX(x, y, z), y + D_FnY(x, y, z), z) }
)
#end // macro DistortedImagePigment
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
#declare A = 1.5; // Amplitude
#declare F = 1.0; // Frequency
// Two (different) noisy functions.
#declare N_FnX = function { A*(f_agate( 0 + F*x, F*y, z) - 0.5) }
#declare N_FnY = function { A*(f_agate(100 + F*x, F*y, z) - 0.5) }
box {
-<1, 1, 1>/2, <1, 1, 1>/2
texture {
DistortedImagePigment("YourImage.png", N_FnX, N_FnY)
finish { ambient color White*1.0 } // Adjust brightness here
translate -<1, 1, 0>/2
}
scale <4, 3, 1> // Adjust to image aspect ratio here
}
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
background { color White }
camera {
orthographic
location -3.1*z
look_at 0*y
}
// ===== 1 ======= 2 ======= 3 ======= 4 ======= 5 ======= 6 ======= 7
Post a reply to this message
|
|
| |
| |
|
|
|
|
| |
|
|