#cgi

rhysy@diaspora.glasswings.com

And with this final section at last restored, I pronounce my website back to full functionality. Probably more than 99% of the original content is now accessible again. I also cleaned up the main page and replaced the navigation widgets with more useful conventional links to all the sub-pages in each section. No doubt there are still one or two broken links but there won't be many. There's still some behind-the-scenes stuff that needs tidying up, but nothing that should affect the actual site.

Anyway, this particular section covers all of my #art projects, back from the days when I had time to do such things : Orion-drive nuclear spaceships, various #scifi projects, #space themed illustrations and charts, and various other stuff.

#CGI
#Blender

http://www.rhysy.net/Art/

zebulon_1er@diasp.org

#cgi #povray
[fr] Chose promise, chose due.


...
==== [Parsing...] ==========================================================
datetime seconds = 1664614401
Environment map: "povray/Images/Maps/Environment/nature/glass_passage_4k.exr"
Radiosity_Final in use
----------------------------------------------------------------------------
Parser Statistics
----------------------------------------------------------------------------
Finite Objects:          122
Infinite Objects:          0
Light Sources:             2
Total:                   124
----------------------------------------------------------------------------
Parser Time
  Parse Time:       0 hours  1 minutes 17 seconds (77.196 seconds)
              using 1 thread(s) with 48.081 CPU-seconds total
  Bounding Time:    0 hours  0 minutes  0 seconds (0.001 seconds)
              using 1 thread(s) with 0.000 CPU-seconds total
----------------------------------------------------------------------------
Render Options
  Quality:  9
  Bounding boxes.......On   Bounding threshold: 3
  Antialiasing.........On  (Method 2, Threshold 0.012, Depth 3, Jitter 1.00, Gamma 2.50)

==== [Rendering...] ========================================================
----------------------------------------------------------------------------
Render Statistics
Image Resolution 1920 x 1080
----------------------------------------------------------------------------
Pixels:          2214937   Samples:        26749784   Smpls/Pxl: 12.08
Rays:         3340116737   Saved:         294197720   Max Level: 5/5
----------------------------------------------------------------------------
Ray->Shape Intersection          Tests       Succeeded  Percentage
----------------------------------------------------------------------------
Blob                       26438658124     10106821219     38.23
Blob Component            311082761349     81567902646     26.22
Blob Bound               3629569968762   1143450081922     31.50
Box                        57040815425      5625816864      9.86
Cone/Cylinder             159201252025     35930185139     22.57
CSG Intersection           94529078086      5762937110      6.10
CSG Merge                  35526930485       883451592      2.49
Isosurface                  9748725220      2588756394     26.55
Isosurface Container       13981715447      9748748487     69.72
Isosurface Cache             339834072        55907966     16.45
Plane                      34747526078     15454333049     44.48
Sphere                     32780040255     11868542227     36.21
Torus                        779404407         7706024      0.99
Torus Bound                  779404407         8728409      1.12
True Type Font                  193961           28005     14.44
Bounding Box              357570940119    179114851597     50.09
----------------------------------------------------------------------------
Isosurface roots:        9721850965
Function VM calls:     299090261476
----------------------------------------------------------------------------
Roots tested:           14495201962   eliminated:           2745152602
Shadow Ray Tests:       27188375636   Succeeded:           12303693126
Shadow Cache Hits:       3311733325
Reflected Rays:          1322488035   Total Internal:        205017101
Refracted Rays:          1631900360
Transmitted Rays:          14782021
----------------------------------------------------------------------------
Radiosity samples calculated:           427477 (0.34 %)
  discarded due to low quality:          14015
  retained for re-use:                  413462
Radiosity samples reused:            125272118
Radiosity sample rays shot:          341981600
Radiosity octree nodes:                  65102
Radiosity octree samples/node:            6.35
Radiosity blocks examined:        149468616451
Radiosity blocks passed test 0:   149468616451 (100.00 %)
Radiosity blocks passed test 1:    51645328591 (34.55 %)
Radiosity blocks passed test 2:    33436489295 (22.37 %)
Radiosity blocks passed test 3:     3244799462 (2.17 %)
Radiosity blocks passed test 4:     2189966892 (1.47 %)
Radiosity blocks passed test 5:     2079234507 (1.39 %)
Radiosity blocks rejected:        147389381944 (98.61 %)
----------------------------------------------------------------------------
Radiosity Depth 0 calculated:           427477 (0.34 %)
Radiosity Depth 0 reused:            125272118
Radiosity Depth 0 rays shot:         341981600
----------------------------------------------------------------------------
Radiosity (final) calculated:           350330 (0.28 %)
Radiosity (final) reused:            125164141
Radiosity (final) rays shot:         280264000
----------------------------------------------------------------------------
  Pass     Depth 0           Total
----------------------------------------------------------------------------
  1             82              82
  2            377             377
  3           2590            2590
  4           9815            9815
  5+         64283           64283
  Final     350330          350330
----------------------------------------------------------------------------
  Total     427477          427477
  Weight     0.115 
----------------------------------------------------------------------------
----------------------------------------------------------------------------
Render Time:
  Photon Time:      No photons
  Radiosity Time:   2 hours 12 minutes 24 seconds (7944.230 seconds)
              using 8 thread(s) with 53926.107 CPU-seconds total
  Trace Time:     186 hours 17 minutes 42 seconds (670662.832 seconds)
zebulon_1er@diasp.org

#cgi #povray
ping @tTh, @Nunuche Follette, @inco gnito, ... :)

Bois et RĂ©sine Epoxyde dans povray

AprÚs avoir un peu fait joujou avec mon dé, à lui essayer tout plein de textures diverses et variées... j'ai repensé à ces vidéos, postées par @Nunuche Follette, sur des objets en bois flotté noyé dans de la résine époxyde.

J'ai donc tout naturellement voulu faire un dé de la sorte.


Créer un objet qui sera inséré, comme un bout de bois, à l'aide d'une isosurface {} et une fonction f_granite comme générateur de forme, ce n'est pas le plus compliqué :
```povray
/*
** Gros dé en bois et résine époxyde
*/

#version 3.7;

#include "colors.inc"
#include "consts.inc"
#include "functions.inc"
#include "transforms.inc"

#include "isocsg/iso_csg.inc" // ISO_CSG, voir http://imagico.de/pov/ic/index.php

#declare EPSILON = 1e-4; // toute petite valeur, pour les marges

#ifndef (ASPECT_RATIO)
#declare ASPECT_RATIO = image_width / image_height;
#end

#declare AMBIENT_LIGHT = rgb 1/3;

#default {
finish { ambient AMBIENT_LIGHT }
}

global_settings {
charset utf8
assumed_gamma srgb
ambient_light AMBIENT_LIGHT
}

#declare SEED = seed(639663322);

#macro V3Rand()
< rand(SEED), rand(SEED), rand(SEED) >
#end

#macro V3SRand()
(V3Rand() * 2 - 1)
#end

#declare Size = 5; // taille du dé : 5 cms

#declare Size2 = Size / 2;
#declare Size2E = Size2 + EPSILON;

#local f1 = IC_Transform(f_granite,
transform {
scale Size * pi
translate V3SRand() * 100
rotate V3SRand() * 180
}
)

isosurface {
function { f1(x,y,z) * 0.4 - 0.075 }
contained_by { box { -Size2E, Size2E } }
accuracy 0.001
evaluate 1.1*0.6, sqrt(1/0.6), 0.7
pigment { White }
translate y * Size2E
}

// ground
plane { y, 0 pigment { Gray } }

camera {
location -z * 10
look_at o
direction z * 10

sky y
right x * ASPECT_RATIO
up y

translate -z * 100
rotate x * 30
rotate y * -60
translate y * Size2
}

// light intensity factor
// a: light distance (from object : light pos - object pos)
// b: light fade distance
// c: light fade power
#declare f_LightIntensityFactor = function(a,b,c) { pow(a/b + 1, c) / 2 }

#local Pos = vtransform(< -1, 2, -1 > * 100, transform { rotate y * -60 });
#local Int = f_LightIntensityFactor(vlength(Pos), 200, 1.5);
light_source {
Pos
color White * 1/3 * Int
fade_distance 200
fade_power 1.5
}

#local Pos = vtransform(< -1, 1, -1 > * 100, transform { rotate y * -150 });
#local Int = f_LightIntensityFactor(vlength(Pos), 100, 1.5);
light_source {
Pos
color White * 2/3 * Int
fade_distance 100
fade_power 1.5
}
```

Délimité par un cube.


Sauf que mon conteneur, ce n'est pas juste un simple cube (contained_by { box { -Size2E, Size2E } }), mais un dé, fait de l'intersection d'une sphÚre et d'un cube à laquelle on a enlevé des sphÚres écrasées pour y numéroter les faces de 1 à 6.

On a alors simplement l'idée d'utiliser le dé, fait en CSG classique, que l'on va intersecter (je ne sais pas si ça se dit) avec le morceau de bois précédemment créé en isosurface :

/*
** Gros dé en bois et résine époxyde
*/

#version 3.7;

#include "colors.inc"
#include "consts.inc"
#include "functions.inc"
#include "transforms.inc"

#include "isocsg/iso_csg.inc" // ISO_CSG, voir http://imagico.de/pov/ic/index.php

#include "ftz_dice.inc"

#declare EPSILON = 1e-4; // toute petite valeur, pour les marges

#ifndef (ASPECT_RATIO)
  #declare ASPECT_RATIO = image_width / image_height;
#end

#declare AMBIENT_LIGHT = rgb 1/3;

#default {
  finish { ambient AMBIENT_LIGHT }
}

global_settings {
  charset utf8
  assumed_gamma srgb
  ambient_light AMBIENT_LIGHT
}

#declare SEED = seed(639663322);

#macro V3Rand()
  < rand(SEED), rand(SEED), rand(SEED) >
#end

#macro V3SRand()
  (V3Rand() * 2 - 1)
#end

#declare Size = 5; // taille du dé : 5 cms

#declare Size2  = Size / 2;
#declare Size2E = Size2 + EPSILON;

#local f1 = IC_Transform(f_granite,
   transform {
    scale Size * pi
    translate V3SRand() * 100
    rotate V3SRand() * 180
  }
)

intersection {
  isosurface {
    function { f1(x,y,z) * 0.4 - 0.075 }
    contained_by { box { -Size2E, Size2E } }
    accuracy 0.001
    evaluate 1.1*0.6, sqrt(1/0.6), 0.7
  }
  FTZ_Dice(
    Size,
    material {},
    material {}
  )
  pigment { White }
  translate y * Size2E
}

// ground
plane { y, 0 pigment { Gray } }

camera {
  location  -z * 10
  look_at    o
  direction  z * 10

  sky    y
  right  x * ASPECT_RATIO
  up     y

  translate -z * 100
  rotate x * 30
  rotate y * -60
  translate y * Size2
}

// light intensity factor
// a: light distance (from object : light pos - object pos)
// b: light fade distance
// c: light fade power
#declare f_LightIntensityFactor = function(a,b,c) { pow(a/b + 1, c) / 2 }

#local Pos = vtransform(< -1, 2, -1 > * 100, transform { rotate y * -60 });
#local Int = f_LightIntensityFactor(vlength(Pos), 200, 1.5);
light_source {
  Pos
  color White * 1/3 * Int
  fade_distance 200
  fade_power 1.5
}

#local Pos = vtransform(< -1, 1, -1 > * 100, transform { rotate y * -150 });
#local Int = f_LightIntensityFactor(vlength(Pos), 100, 1.5);
light_source {
  Pos
  color White * 2/3 * Int
  fade_distance 100
  fade_power 1.5
}

Voilà, c'est déjà mieux. Mon morceau de bois ne dépassera pas du dé conteneur.


Reste plus qu'Ă  utiliser une jolie texture bois pour cette partie... disons T_Wood13 (de woods.inc fourni avec povray) :

/*
** Gros dé en bois et résine époxyde
*/

#version 3.7;

#include "colors.inc"
#include "consts.inc"
#include "functions.inc"
#include "transforms.inc"
#include "woods.inc"

#include "isocsg/iso_csg.inc" // ISO_CSG, voir http://imagico.de/pov/ic/index.php

#include "ftz_dice.inc"

#declare EPSILON = 1e-4; // toute petite valeur, pour les marges

#ifndef (ASPECT_RATIO)
  #declare ASPECT_RATIO = image_width / image_height;
#end

#declare AMBIENT_LIGHT = rgb 1/3;

#default {
  finish { ambient AMBIENT_LIGHT }
}

global_settings {
  charset utf8
  assumed_gamma srgb
  ambient_light AMBIENT_LIGHT
}

#declare SEED = seed(639663322); // changez ce nombre, et toute la chaßne de nombres aléatoires appelés sera différente

#macro V3Rand()
  < rand(SEED), rand(SEED), rand(SEED) >
#end

#macro V3SRand()
  (V3Rand() * 2 - 1)
#end

#declare Size = 5; // taille du dé : 5 cms

#declare Size2  = Size / 2;
#declare Size2E = Size2 + EPSILON;

#local f1 = IC_Transform(f_granite,
   transform {
    scale Size * pi
    translate V3SRand() * 100
    rotate V3SRand() * 180
  }
)

intersection {
  isosurface {
    function { f1(x,y,z) * 0.4 - 0.075 }
    contained_by { box { -Size2E, Size2E } }
    accuracy 0.001
    evaluate 1.1*0.6, sqrt(1/0.6), 0.7
  }
  FTZ_Dice(
    Size,
    material {},
    material {}
  )
  texture {
    T_Wood13
    translate V3SRand() * 1e4
    rotate V3SRand() * 180
  }
  translate y * Size2E
}

// ground
plane { y, 0 pigment { Gray } }

camera {
  location  -z * 10
  look_at    o
  direction  z * 10

  sky    y
  right  x * ASPECT_RATIO
  up     y

  translate -z * 100
  rotate x * 30
  rotate y * -60
  translate y * Size2
}

// light intensity factor
// a: light distance (from object : light pos - object pos)
// b: light fade distance
// c: light fade power
#declare f_LightIntensityFactor = function(a,b,c) { pow(a/b + 1, c) / 2 }

#local Pos = vtransform(< -1, 2, -1 > * 100, transform { rotate y * -60 });
#local Int = f_LightIntensityFactor(vlength(Pos), 200, 1.5);
light_source {
  Pos
  color White * 1/3 * Int
  fade_distance 200
  fade_power 1.5
}

#local Pos = vtransform(< -1, 1, -1 > * 100, transform { rotate y * -150 });
#local Int = f_LightIntensityFactor(vlength(Pos), 100, 1.5);
light_source {
  Pos
  color White * 2/3 * Int
  fade_distance 100
  fade_power 1.5
}


Il ne reste plus qu'à ajouter le dé en résine époxyde :

/*
** Gros dé en bois et résine époxyde
*/

#version 3.7;

#include "colors.inc"
#include "consts.inc"
#include "finish.inc"
#include "functions.inc"
#include "transforms.inc"
#include "woods.inc"

#include "isocsg/iso_csg.inc" // ISO_CSG, voir http://imagico.de/pov/ic/index.php

#include "ftz_dice.inc"

#declare EPSILON = 1e-4; // toute petite valeur, pour les marges

#ifndef (ASPECT_RATIO)
  #declare ASPECT_RATIO = image_width / image_height;
#end

#declare AMBIENT_LIGHT = rgb 1/3;

#default {
  finish { ambient AMBIENT_LIGHT }
}

global_settings {
  charset utf8
  assumed_gamma srgb
  ambient_light AMBIENT_LIGHT
}

#declare SEED = seed(639663322);

#macro V3Rand()
  < rand(SEED), rand(SEED), rand(SEED) >
#end

#macro V3SRand()
  (V3Rand() * 2 - 1)
#end

#declare Size = 5; // taille du dé : 5 cms

#declare Size2  = Size / 2;
#declare Size2E = Size2 + EPSILON;

#local f1 = IC_Transform(f_granite,
   transform {
    scale Size * pi
    translate V3SRand() * 100
    rotate V3SRand() * 180
  }
)

#local o_Wood = intersection {
  isosurface {
    function { f1(x,y,z) * 0.4 - 0.075 }
    contained_by { box { -Size2E, Size2E } }
    accuracy 0.001
    evaluate 1.1*0.6, sqrt(1/0.6), 0.7
  }

  FTZ_Dice(
    Size,
    material {},
    material {}
  )

  texture {
    T_Wood13
    translate V3SRand() * 1e4
    rotate V3SRand() * 180
  }
}

#local o_Dice = FTZ_Dice(Size,
  // résine époxyde légÚrement bleue
  material {
    #local C1 = < 186, 229, 255 > / 255;
    #local C2 = < 117, 157, 181 > / 255;

    #local T = 0.995; // transparence totale (filtrage compris)
    #local F = 0.2; // filtrage seul

    texture {
      pigment { color C1 filter F transmit (T - F) }

      finish {
        diffuse 0.15
        specular 0.8
        roughness 0.001
        reflection {
          C1/17
          fresnel on
        }
      }
    }

    interior {
      ior 1.5
      //dispersion 1.0125 // trĂšs long Ă  rendre, avec de la dispersion
      fade_color C2
      fade_distance Size * 0.85
      fade_power 1001
    }
  },

  // matériau pour les nombres
  material {
    texture {
      pigment { color White * 0.995 }
      finish { Dull }
    }
  }
);

union {
  object { o_Wood }
  object { o_Dice }
  translate y * Size2E
}

// ground
plane { y, 0 pigment { Gray } }

camera {
  location  -z * 10
  look_at    o
  direction  z * 10

  sky    y
  right  x * ASPECT_RATIO
  up     y

  translate -z * 100
  rotate x * 30
  rotate y * -60
  translate y * Size2
}

// light intensity factor
// a: light distance (from object : light pos - object pos)
// b: light fade distance
// c: light fade power
#declare f_LightIntensityFactor = function(a,b,c) { pow(a/b + 1, c) / 2 }

#local Pos = vtransform(< -1, 2, -1 > * 100, transform { rotate y * -60 });
#local Int = f_LightIntensityFactor(vlength(Pos), 200, 1.5);
light_source {
  Pos
  color White * 1/3 * Int
  fade_distance 200
  fade_power 1.5
}

#local Pos = vtransform(< -1, 1, -1 > * 100, transform { rotate y * -150 });
#local Int = f_LightIntensityFactor(vlength(Pos), 100, 1.5);
light_source {
  Pos
  color White * 2/3 * Int
  fade_distance 100
  fade_power 1.5
}

Et voilĂ .

zebulon_1er@diasp.org

#cgi #povray
[en] An include file to build a nice dice, using two material {} of your choice. One for the plain dice, another one for the numbers. Usage :
[fr] Un fichier include pour modĂ©liser un joli dĂ©, utilisant deux material {} de votre choix. Un pour le dĂ© lui-mĂȘme, un autre pour les nombres. Utilisation :

FTZ_Dice(Size, BaseMaterial, DotsMaterial)

include file download here

zebulon_1er@diasp.org

#cgi #povray #gimp
[fr] Modélisation et rendu : povray 3.7. Montage final : gimp.
J'ai volontairement fait de trÚs courtes vis et mis un éclairage ponctuel simple, pour accélérer le temps de rendu.
La colonne de gauche reprĂ©sente des pas de vis Ă  droite (sens par dĂ©faut). Les deux autres colonnes reprĂ©sentent des pas de vis Ă  gauche. Au centre, marquage classique. À droite, marquage alternatif.

zebulon_1er@diasp.org

#povray #cgi
[fr] J'ai encore ajoutĂ© 2 types de tĂȘtes de vis : fendue fraisĂ©e plate et fendue fraisĂ©e bombĂ©e.
Une petite image qui va bien. Avec un mapping d'environnement, ça a tout de suite un peu plus de réalimse.
;)

Ça se devine pas sur l'image, mais les pas de vis sont de vrais pas de vis, rĂ©alisĂ©s avec la fonction f_helix1().

zebulon_1er@diasp.org

#povray #cgi
[fr] Petit ajout, une nouvelle tĂȘte : fraisĂ©e 6 pans creux.
Dans ce GIF, j'ai ajouté les conteneurs (clip, bound) en cyan, ainsi que les axes de référence en bleu.
On peut voir que la tĂȘte fraisĂ©e 6 pans creux est en dessous du plan de rĂ©fĂ©rence, du fait que cette tĂȘte est entiĂšrement noyĂ©e lors de l'assemblage. Ce qui n'est pas du tout le cas des 5 autres types de tĂȘte de vis.

waynerad@pluspora.com

"CGI did, in fact, ruin movies." "If you go back in filmmaking prior to somewhere around 2000, give or take a decade depending on the title and genre, almost all films look so much realer."

"Consider director Denis Villenueve's 2021 Dune, which was released to critical and public acclaim. It was lauded for its special effects, the supposed realness of its world, and Villenueve admirably went to actual deserts, like the United Arab Emirates, to film a number of scenes. Yet despite his best efforts, I cannot help but notice that digital post-processing seems to have ruined Villeuneve's more realistic vision. Lawrence of Arabia from 1962 looks so much more real than Dune."

"So why? Why don't movies look like reality anymore? Is my conspiracy theory of a sinister cabal of cost-cutters true? Not quite. Because the new digital cinema doesn't save any money. In fact, it's more expensive."

CGI did, in fact, ruin movies

#solidstatelife #cgi