The eyes are the mirror of the soul

I have created a deterministic procedural eye iris generator in C++ and Qt. This allows agents to have completely unique iris shape and pattern.

I will integrate this  into the expression code soon, but until then, here are a few screenshots. I think it turned out pretty alright for 2 days work.

UPDATE: Here is a link to the full source code in C++, and here is the test code with the UI you see in the screenshots. Some details on the implementation follows:

  • It uses 2 separate sources of 3D simplex noise, one for the streaks and one for radial perturbation of the streaks.
  • It uses 20 random float parameters plus 2 colors to tweak the parameters of the simplexes (3 parameters each) plus tweak the scaling and offset and other "funky hard-coded equations" to to produce irises that kind of looks real, interesting and diverse without carefully selected boundaries.
  • Rendering is done in a scale invariant way so that the eye can be scaled up "infinitely" wihtout changing its character.
  • Rendering is done in floating point and produces results that go slightly into high dynamic range.
  • It uses filmic2 tone mapping to convert HDR back to normal 8-bit ranges.
  • The code should be fairly portable, both the Simplex implementation and the rendrer itself should only depend on Qt, and porting it away from Qt should be easy.

No comments:

Post a Comment