{"id":104,"date":"2020-08-18T14:13:58","date_gmt":"2020-08-18T14:13:58","guid":{"rendered":"http:\/\/half4.xyz\/?p=104"},"modified":"2024-08-13T08:45:00","modified_gmt":"2024-08-13T08:45:00","slug":"introduction-physically-modeling-skin-tones","status":"publish","type":"post","link":"https:\/\/half4.xyz\/index.php\/2020\/08\/18\/introduction-physically-modeling-skin-tones\/","title":{"rendered":"Physically Modeling Skin Tones"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"104\" class=\"elementor elementor-104\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-8030fd4 elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no\" data-id=\"8030fd4\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-06c9dc5\" data-id=\"06c9dc5\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-1f7b119 elementor-widget elementor-widget-video\" data-id=\"1f7b119\" data-element_type=\"widget\" data-settings=\"{&quot;video_type&quot;:&quot;hosted&quot;,&quot;mute&quot;:&quot;yes&quot;,&quot;controls&quot;:&quot;yes&quot;}\" data-widget_type=\"video.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<div class=\"e-hosted-video elementor-wrapper elementor-open-inline\">\n\t\t\t\t\t<video class=\"elementor-video\" src=\"https:\/\/half4.xyz\/wp-content\/uploads\/2020\/08\/Project.mp4\" controls=\"\" preload=\"metadata\" muted=\"muted\" controlsList=\"nodownload\"><\/video>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-14e210d elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no\" data-id=\"14e210d\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-c0b6cf4\" data-id=\"c0b6cf4\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-5c783c2 elementor-widget elementor-widget-text-editor\" data-id=\"5c783c2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<figure class=\"wp-block-video\"><figcaption>Some of the types of effects you can achieve<\/figcaption><\/figure><p>In this tutorial series, we will cover a novel approach to coloring skin tones in realtime. Our technique will:<\/p><ul style=\"font-size: 15px; background-color: #ffffff;\"><li style=\"font-size: 15px;\">Generate<span style=\"text-decoration-line: underline;\">\u00a0<em>physically<\/em>\u00a0<em>correct<\/em><\/span>\u00a0skin tones based on Monte Carlo reflectance simulations from spectral absorption data.<\/li><li style=\"font-size: 15px;\">Enable the realtime changing of skin color, whilst maintaining underlying pigmentation (such as blemishes, scars, moles, pink lips, even make-up)<\/li><li style=\"font-size: 15px;\">Support tan lines and realtime blushing<\/li><li style=\"font-size: 15px;\">Generate<span style=\"text-decoration-line: underline;\">\u00a0<em>physically<\/em>\u00a0<em>correct<\/em><\/span>\u00a0skin tones based on Monte Carlo reflectance simulations from spectral absorption data.<\/li><\/ul><h2 class=\"wp-block-heading\" style=\"font-family: Roboto, sans-serif; color: #7a7a7a;\">Why Do This?<\/h2><p>Motivations for this approach.<\/p><p><span style=\"font-weight: bolder;\">More Diversity For Less Work<\/span><\/p><p>Achieving ethnic diversity in games is an important goal, and one that is so critically undervalued and ignored. This technique will allow to pick from a wide range of skin colors, and change the skin color of our characters, without having to re-author textures, or have convoluted workflows that normalize textures (i.e. greyscale textures) to hack a result. There is no reason not to even randomize your skin tones with this approach and get a truly diverse cast of characters.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-1d6cdf0 elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no\" data-id=\"1d6cdf0\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-e91aabe\" data-id=\"e91aabe\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-73536d3 elementor-widget elementor-widget-image\" data-id=\"73536d3\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"960\" height=\"810\" src=\"https:\/\/half4.xyz\/wp-content\/uploads\/2020\/07\/Paragon_Examples-1024x864.png\" class=\"attachment-large size-large wp-image-357\" alt=\"\" srcset=\"https:\/\/half4.xyz\/wp-content\/uploads\/2020\/07\/Paragon_Examples-1024x864.png 1024w, https:\/\/half4.xyz\/wp-content\/uploads\/2020\/07\/Paragon_Examples-300x253.png 300w, https:\/\/half4.xyz\/wp-content\/uploads\/2020\/07\/Paragon_Examples-768x648.png 768w, https:\/\/half4.xyz\/wp-content\/uploads\/2020\/07\/Paragon_Examples-1536x1295.png 1536w\" sizes=\"(max-width: 960px) 100vw, 960px\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-82e0cbb elementor-section-boxed elementor-section-height-default elementor-section-height-default wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no\" data-id=\"82e0cbb\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-8e1f9cb\" data-id=\"8e1f9cb\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-ed2c688 elementor-widget elementor-widget-text-editor\" data-id=\"ed2c688\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p><strong>More Believable Characters<\/strong><\/p><blockquote class=\"wp-block-quote\"><p>\u201c<em>Facial appearance depends on both the physical and physiological state of the skin. As people move, talk, undergo stress, and change expression, skin appearance is in constant flux. One of the key indicators of these changes is the color of skin. Skin color is determined by scattering and absorption of light within the skin layers, caused mostly by concentrations of two chromophores, melanin and hemoglobin.<\/em>\u201c<\/p><p><cite><em>Jimenez et al. [2010]<\/em><\/cite><\/p><\/blockquote><p>To get more convincing skin color, we need to be able to change the color of the skin at run time, such as with blushing, or when angry. We need to be able to \u201credden\u201d the face.<\/p><p>In addition, we want our skin color to be physically-based. That is, we won\u2019t want to pick from edited photos to sample our skin color \u2013 we want an albedo that is grounded in real values of human skin pigmentation. This way, we won\u2019t need to spend as long calibrating our \u2018guessed\u2019 skin tones against real world photos \u2013 we will just have\u00a0<em>real\u00a0<\/em>values to select from.<\/p><p><strong>Learn About Spectral Values and Monte Carlo Simulation<\/strong><\/p><p>There\u2019s no better excuse to learn something than for the sake of it! This will hopefully teach you something new. I had to learn many of the techniques demonstrated here\u00a0<em>just<\/em>\u00a0for this tutorial because I couldn\u2019t find tutorials covering much of it anyway. Hopefully I can share these learnings, because Spectral Aborption, reflection and Monte Carlo simulations are great to have in your toolbox.<\/p><h2 class=\"wp-block-heading\">Table of Contents<\/h2><p><blockquote class=\"wp-embedded-content\" data-secret=\"m7YZF34Dgl\"><a href=\"https:\/\/half4.xyz\/index.php\/2020\/08\/18\/introduction-physically-modeling-skin-tones\/\">Physically Modeling Skin Tones<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Physically Modeling Skin Tones&#8221; &#8212; half4.xyz\" src=\"https:\/\/half4.xyz\/index.php\/2020\/08\/18\/introduction-physically-modeling-skin-tones\/embed\/#?secret=dk5fLI0uEG#?secret=m7YZF34Dgl\" data-secret=\"m7YZF34Dgl\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p><p><blockquote class=\"wp-embedded-content\" data-secret=\"Y8HiRv25og\"><a href=\"https:\/\/half4.xyz\/index.php\/2020\/08\/18\/introduction-setting-up\/\">Introduction: Setting Up<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Introduction: Setting Up&#8221; &#8212; half4.xyz\" src=\"https:\/\/half4.xyz\/index.php\/2020\/08\/18\/introduction-setting-up\/embed\/#?secret=Iu5l6UD0tW#?secret=Y8HiRv25og\" data-secret=\"Y8HiRv25og\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p><p><blockquote class=\"wp-embedded-content\" data-secret=\"2nmY698lQW\"><a href=\"https:\/\/half4.xyz\/index.php\/2020\/08\/18\/part-1-theory-what-makes-skin-color\/\">Part 1 (Theory): What Makes Skin Color?<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Part 1 (Theory): What Makes Skin Color?&#8221; &#8212; half4.xyz\" src=\"https:\/\/half4.xyz\/index.php\/2020\/08\/18\/part-1-theory-what-makes-skin-color\/embed\/#?secret=IpWegzX523#?secret=2nmY698lQW\" data-secret=\"2nmY698lQW\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p><p><blockquote class=\"wp-embedded-content\" data-secret=\"6rBzq5lupA\"><a href=\"https:\/\/half4.xyz\/index.php\/2020\/08\/18\/part-1-practical-what-makes-skin-color\/\">Part 1 (Practical): What Makes Skin Color?<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Part 1 (Practical): What Makes Skin Color?&#8221; &#8212; half4.xyz\" src=\"https:\/\/half4.xyz\/index.php\/2020\/08\/18\/part-1-practical-what-makes-skin-color\/embed\/#?secret=SZXGbFv33k#?secret=6rBzq5lupA\" data-secret=\"6rBzq5lupA\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p><p><blockquote class=\"wp-embedded-content\" data-secret=\"uJpieYhkL1\"><a href=\"https:\/\/half4.xyz\/index.php\/2020\/08\/18\/part-2-theory-the-monte-carlo-simulation\/\">Part 2 (Theory): The Monte Carlo Simulation<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Part 2 (Theory): The Monte Carlo Simulation&#8221; &#8212; half4.xyz\" src=\"https:\/\/half4.xyz\/index.php\/2020\/08\/18\/part-2-theory-the-monte-carlo-simulation\/embed\/#?secret=qxnThCDrWR#?secret=uJpieYhkL1\" data-secret=\"uJpieYhkL1\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p><p><blockquote class=\"wp-embedded-content\" data-secret=\"S3eftJpZxr\"><a href=\"https:\/\/half4.xyz\/index.php\/2020\/08\/18\/part-2-practical-the-monte-carlo-simulation\/\">Part 2 (Practical): The Monte Carlo Simulation<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Part 2 (Practical): The Monte Carlo Simulation&#8221; &#8212; half4.xyz\" src=\"https:\/\/half4.xyz\/index.php\/2020\/08\/18\/part-2-practical-the-monte-carlo-simulation\/embed\/#?secret=jJTvVgUGXv#?secret=S3eftJpZxr\" data-secret=\"S3eftJpZxr\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p><p><blockquote class=\"wp-embedded-content\" data-secret=\"p4WY6FSZmw\"><a href=\"https:\/\/half4.xyz\/index.php\/2020\/08\/18\/part-3-theory-spectral-reflection-color-spaces\/\">Part 3 (Theory): Spectral Reflection &#038; Color Spaces<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Part 3 (Theory): Spectral Reflection &#038; Color Spaces&#8221; &#8212; half4.xyz\" src=\"https:\/\/half4.xyz\/index.php\/2020\/08\/18\/part-3-theory-spectral-reflection-color-spaces\/embed\/#?secret=RLzkKKBYLU#?secret=p4WY6FSZmw\" data-secret=\"p4WY6FSZmw\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p><p><blockquote class=\"wp-embedded-content\" data-secret=\"FhisSuaf4M\"><a href=\"https:\/\/half4.xyz\/index.php\/2020\/08\/18\/part-3-practical-spectral-reflection-color-spaces\/\">Part 3 (Practical): Spectral Reflection &#038; Color Spaces<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Part 3 (Practical): Spectral Reflection &#038; Color Spaces&#8221; &#8212; half4.xyz\" src=\"https:\/\/half4.xyz\/index.php\/2020\/08\/18\/part-3-practical-spectral-reflection-color-spaces\/embed\/#?secret=WVf3qNobQY#?secret=FhisSuaf4M\" data-secret=\"FhisSuaf4M\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p><p><blockquote class=\"wp-embedded-content\" data-secret=\"X1LZovLen5\"><a href=\"https:\/\/half4.xyz\/index.php\/2020\/08\/18\/part-3b-practical-python-imaging-library-pillow\/\">Part 3b (Practical): Python Imaging Library (Pillow)<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Part 3b (Practical): Python Imaging Library (Pillow)&#8221; &#8212; half4.xyz\" src=\"https:\/\/half4.xyz\/index.php\/2020\/08\/18\/part-3b-practical-python-imaging-library-pillow\/embed\/#?secret=WHDQSGpzOg#?secret=X1LZovLen5\" data-secret=\"X1LZovLen5\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p><p><blockquote class=\"wp-embedded-content\" data-secret=\"5KXbJARK5i\"><a href=\"https:\/\/half4.xyz\/index.php\/2020\/08\/27\/part-4-skin-shader\/\">Part 4: Skin Shader<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Part 4: Skin Shader&#8221; &#8212; half4.xyz\" src=\"https:\/\/half4.xyz\/index.php\/2020\/08\/27\/part-4-skin-shader\/embed\/#?secret=GWgoQJk1hN#?secret=5KXbJARK5i\" data-secret=\"5KXbJARK5i\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p><p><blockquote class=\"wp-embedded-content\" data-secret=\"ozHVOTmSQs\"><a href=\"https:\/\/half4.xyz\/index.php\/2020\/08\/27\/part-5-extending-the-shader\/\">Part 5: Extending the Shader<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Part 5: Extending the Shader&#8221; &#8212; half4.xyz\" src=\"https:\/\/half4.xyz\/index.php\/2020\/08\/27\/part-5-extending-the-shader\/embed\/#?secret=Zo2ThS9RFo#?secret=ozHVOTmSQs\" data-secret=\"ozHVOTmSQs\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p><p><blockquote class=\"wp-embedded-content\" data-secret=\"bWLk2iOq3J\"><a href=\"https:\/\/half4.xyz\/index.php\/2020\/08\/27\/part-6-concluding-notes\/\">Part 6: Concluding Notes<\/a><\/blockquote><iframe class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;Part 6: Concluding Notes&#8221; &#8212; half4.xyz\" src=\"https:\/\/half4.xyz\/index.php\/2020\/08\/27\/part-6-concluding-notes\/embed\/#?secret=J3uqm2hkXG#?secret=bWLk2iOq3J\" data-secret=\"bWLk2iOq3J\" width=\"600\" height=\"338\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe><\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>https:\/\/half4.xyz\/wp-content\/uploads\/2020\/08\/Project.mp4 Some of the types of effects you can achieve In this tutorial series, we will cover a novel approach to coloring skin tones in realtime. Our technique will: Generate\u00a0physically\u00a0correct\u00a0skin tones based on Monte Carlo reflectance simulations from spectral absorption data. Enable the realtime changing of skin color, whilst maintaining underlying pigmentation (such as blemishes, scars, moles, pink lips, even make-up) Support tan lines and realtime blushing Generate\u00a0physically\u00a0correct\u00a0skin tones based on Monte Carlo reflectance simulations from spectral absorption data. Why Do This? Motivations for this approach. More Diversity For Less Work Achieving ethnic diversity in games is an important goal, and one that is so critically undervalued and ignored. This technique will allow to pick from a wide range of skin colors, and change the skin color of our characters, without having to re-author textures, or have convoluted workflows that normalize textures (i.e. greyscale textures) to hack a result. There is no reason not to even randomize your skin tones with this approach and get a truly diverse cast of characters. More Believable Characters \u201cFacial appearance depends on both the physical and physiological state of the skin. As people move, talk, undergo stress, and change expression, skin appearance is in constant flux. One of the key indicators of these changes is the color of skin. Skin color is determined by scattering and absorption of light within the skin layers, caused mostly by concentrations of two chromophores, melanin and hemoglobin.\u201c Jimenez et al. [2010] To get more convincing skin color, we need to be able to change the color of the skin at run time, such as with blushing, or when angry. We need to be able to \u201credden\u201d the face. In addition, we want our skin color to be physically-based. That is, we won\u2019t want to pick from edited photos to sample our skin color \u2013 we want an albedo that is grounded in real values of human skin pigmentation. This way, we won\u2019t need to spend as long calibrating our \u2018guessed\u2019 skin tones against real world photos \u2013 we will just have\u00a0real\u00a0values to select from. Learn About Spectral Values and Monte Carlo Simulation There\u2019s no better excuse to learn something than for the sake of it! This will hopefully teach you something new. I had to learn many of the techniques demonstrated here\u00a0just\u00a0for this tutorial because I couldn\u2019t find tutorials covering much of it anyway. Hopefully I can share these learnings, because Spectral Aborption, reflection and Monte Carlo simulations are great to have in your toolbox. Table of Contents Physically Modeling Skin Tones Introduction: Setting Up Part 1 (Theory): What Makes Skin Color? Part 1 (Practical): What Makes Skin Color? Part 2 (Theory): The Monte Carlo Simulation Part 2 (Practical): The Monte Carlo Simulation Part 3 (Theory): Spectral Reflection &#038; Color Spaces Part 3 (Practical): Spectral Reflection &#038; Color Spaces Part 3b (Practical): Python Imaging Library (Pillow) Part 4: Skin Shader Part 5: Extending the Shader Part 6: Concluding Notes<\/p>\n","protected":false},"author":1,"featured_media":249,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[8,7,9],"class_list":["post-104","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-tuts","tag-lut","tag-skin","tag-tutorial"],"_links":{"self":[{"href":"https:\/\/half4.xyz\/index.php\/wp-json\/wp\/v2\/posts\/104"}],"collection":[{"href":"https:\/\/half4.xyz\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/half4.xyz\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/half4.xyz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/half4.xyz\/index.php\/wp-json\/wp\/v2\/comments?post=104"}],"version-history":[{"count":49,"href":"https:\/\/half4.xyz\/index.php\/wp-json\/wp\/v2\/posts\/104\/revisions"}],"predecessor-version":[{"id":1388,"href":"https:\/\/half4.xyz\/index.php\/wp-json\/wp\/v2\/posts\/104\/revisions\/1388"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/half4.xyz\/index.php\/wp-json\/wp\/v2\/media\/249"}],"wp:attachment":[{"href":"https:\/\/half4.xyz\/index.php\/wp-json\/wp\/v2\/media?parent=104"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/half4.xyz\/index.php\/wp-json\/wp\/v2\/categories?post=104"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/half4.xyz\/index.php\/wp-json\/wp\/v2\/tags?post=104"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}