Deep diveAnaliza

Subsurface scatteringSubsurface scattering

Every other layer in a surface shader takes a weight between 0 and 1. Subsurface takes distances — which makes it the one layer where the scale your scene is modelled at changes the result. That, plus a set of parameter names that actively mislead, is why subsurface is the layer people lose the most time on when they change renderer.

Każda inna warstwa w shaderze powierzchni przyjmuje wagę między 0 a 1. Subsurface przyjmuje odległości — co czyni ją jedyną warstwą, w której skala, w jakiej modelowana jest twoja scena, zmienia wynik. To, plus zestaw nazw parametrów, które aktywnie wprowadzają w błąd, sprawia, że subsurface to warstwa, na której ludzie tracą najwięcej czasu przy zmianie renderera.

What's actually happeningCo się naprawdę dzieje

On most materials, light arrives at the surface and leaves from the same spot — it either bounces off the top or scatters back out of the paint immediately. Subsurface materials don't do that. Light goes in, ricochets around underneath for a while, and comes back out somewhere else entirely.

Na większości materiałów światło dociera do powierzchni i opuszcza ją w tym samym miejscu — albo odbija się od wierzchu, albo natychmiast rozprasza z powrotem z farby. Materiały subsurface tego nie robią. Światło idzie do środka, odbija się tam przez chwilę i wychodzi zupełnie gdzie indziej.

Think of it asPomyśl o tym tak

Shining a flashlight through your fingers. The glow doesn't appear where the beam hits — it appears all around, spread out and turned red, because the light travelled sideways through the flesh before it found a way out.

Świecenie latarką przez palce. Poświata nie pojawia się tam, gdzie trafia wiązka — pojawia się dookoła, rozlana i zaczerwieniona, bo światło podróżowało w bok przez ciało, zanim znalazło drogę na zewnątrz.

That "travelled sideways" is the whole thing. To describe it, the shader can't just ask how much — it has to ask how far. And the moment a parameter is a real distance rather than a 0–1 weight, it has to be measured against something.

To „podróżowanie w bok" to cała sprawa. Żeby to opisać, shader nie może po prostu zapytać ile — musi zapytać jak daleko. A w chwili, gdy parametr jest prawdziwą odległością zamiast wagą 0–1, musi być zmierzony względem czegoś.

↔ Why this layer is differentDlaczego ta warstwa jest inna

Roughness, gains, weights — none of them care how big your model is. A roughness of 0.2 is 0.2 whether your head is 20 units tall or 200. Subsurface is the exception: it is the only layer in either shader where the scale you modelled at changes the render. Almost every "why does my skin look nothing like it did in Arnold" story traces back to that one sentence.

Roughness, gainy, wagi — żadnemu z nich nie zależy, jak duży jest twój model. Roughness 0.2 to 0.2 bez względu na to, czy twoja głowa ma 20 jednostek wysokości, czy 200. Subsurface to wyjątek: to jedyna warstwa w obu shaderach, gdzie skala, w jakiej modelowałeś, zmienia render. Niemal każda historia „czemu moja skóra w ogóle nie wygląda jak w Arnoldzie" sprowadza się do tego jednego zdania.

Mean free path

Both shaders describe the interior of a material with the same physical idea, so it's worth getting straight before touching any parameter.

Oba shadery opisują wnętrze materiału tą samą fizyczną ideą, więc warto ją sobie wyjaśnić, zanim tkniesz jakikolwiek parametr.

The mean free path is the average distance light travels inside the material before it hits something and changes direction. Short mean free path means light gets knocked about constantly and doesn't get far — milk, ceramic, thick paint. Long mean free path means light travels a long way between collisions — wax, jade, a thin slice of marble.

Mean free path (średnia droga swobodna) to średnia odległość, jaką światło przebywa wewnątrz materiału, zanim na coś trafi i zmieni kierunek. Krótki mean free path oznacza, że światło jest ciągle odbijane i nie odchodzi daleko — mleko, ceramika, gruba farba. Długi mean free path oznacza, że światło pokonuje długą drogę między zderzeniami — wosk, jadeit, cienki plaster marmuru.

Think of it asPomyśl o tym tak

Crossing a room. In an empty corridor you walk a long way before you have to change direction. At a packed party you get a metre before you have to sidestep someone. Same you, same walking — the difference is how densely packed the obstacles are. Mean free path is the average length of one of those stretches.

Przechodzenie przez pokój. W pustym korytarzu idziesz długo, zanim musisz zmienić kierunek. Na zatłoczonej imprezie masz metr, zanim musisz kogoś ominąć. Ten sam ty, to samo chodzenie — różnica polega na tym, jak gęsto upakowane są przeszkody. Mean free path to średnia długość jednego z tych odcinków.

You will also see this written as DMFP, which is where PxrSurface's internal parameter name subsurfaceDmfp comes from. In the interface it's labelled Mean Free Path Distance — same thing, and that longer label is the more honest one, because it tells you it's a distance.

Zobaczysz to też zapisane jako DMFP, skąd bierze się wewnętrzna nazwa parametru PxrSurface subsurfaceDmfp. W interfejsie ma etykietę Mean Free Path Distance — to samo, a ta dłuższa etykieta jest bardziej uczciwa, bo mówi ci, że to odległość.

Everything else in this guide is bookkeeping on top of this one idea: how each shader lets you specify that distance, per colour channel, and in what units.

Wszystko inne w tym przewodniku to księgowość na tej jednej idei: jak każdy shader pozwala określić tę odległość, per kanał koloru, i w jakich jednostkach.

The packed party, made literalZatłoczona impreza, dosłownie

A cross-section of the material. Light enters at the top, changes direction every time it hits something, and either finds its way back out or runs out of energy trying.

Przekrój przez materiał. Światło wchodzi u góry, zmienia kierunek za każdym razem, gdy na coś trafi, i albo znajduje drogę na zewnątrz, albo wyczerpuje energię, próbując.

Jump to a materialPrzejdź do materiału

Short mean free path and the light is knocked about so often it barely gets away from where it went in — that is a dense, opaque material. Lengthen it and the same paths wander far sideways before surfacing, which is what makes wax and jade glow the way they do. Nothing about the light changed; only how far it gets between collisions.

Krótki mean free path i światło jest odbijane tak często, że ledwie oddala się od miejsca, w które weszło — to gęsty, nieprzezroczysty materiał. Wydłuż go, a te same ścieżki wędrują daleko w bok, zanim wypłyną na powierzchnię, co sprawia, że wosk i jadeit świecą tak, jak świecą. Nic w świetle się nie zmieniło; zmienia się tylko to, jak daleko dochodzi między zderzeniami.

Radius vs DMFPRadius kontra DMFP

Here's the good news, which nobody tells you: the two shaders use exactly the same decomposition. Both split the scattering distance into a single number multiplied by a colour.

Oto dobra wiadomość, której nikt ci nie powie: oba shadery używają dokładnie tego samego rozkładu. Oba dzielą odległość rozpraszania na pojedynczą liczbę mnożoną przez kolor.

You need a colour because red, green and blue don't travel the same distance through flesh — more on that below. And you want a single number on top so you can scale all three at once without re-picking the colour. Both Arnold and PxrSurface landed on that design. They just named the two halves in a way that makes them look unrelated.

Potrzebujesz koloru, bo czerwony, zielony i niebieski nie przebywają tej samej odległości przez ciało — więcej o tym niżej. A chcesz mieć na to jedną liczbę, żeby przeskalować wszystkie trzy naraz bez ponownego dobierania koloru. Zarówno Arnold, jak i PxrSurface wylądowały na tym samym projekcie. Po prostu nazwały obie połówki tak, że wyglądają na niepowiązane.

RoleRola AiStandardSurface PxrSurface
The single number (a distance)Pojedyncza liczba (odległość) Subsurface Scale Mean Free Path Distance subsurfaceDmfp
The per-channel colourKolor per kanał Subsurface Radius Mean Free Path Color subsurfaceDmfpColor
Unit scale correctionKorekta skali jednostek nonebrak Unit Length unitLength

So the mapping is a straight swap — and it's the one Pixar's own conversion shader performs: Radius → Mean Free Path Color, and Scale → Mean Free Path Distance.

Więc mapowanie to prosta zamiana — i dokładnie tę wykonuje własny shader konwersji Pixara: Radius → Mean Free Path Color, a Scale → Mean Free Path Distance.

↔ Coming from ArnoldPrzesiadka z Arnolda

Read that mapping twice, because the names fight it. "Radius" sounds like a distance and is actually the colour. "Scale" sounds like a multiplier and is actually the distance. Both instincts are wrong, and they're wrong in opposite directions, so guessing gets you a material that is both the wrong colour and the wrong depth. If a converted subsurface material is badly off in a way you can't tune out, check these two fields haven't been swapped before you change anything else.

Przeczytaj to mapowanie dwa razy, bo nazwy z nim walczą. „Radius" brzmi jak odległość, a jest tak naprawdę kolorem. „Scale" brzmi jak mnożnik, a jest tak naprawdę odległością. Oba instynkty są błędne, i to w przeciwnych kierunkach, więc zgadywanie daje materiał zarówno o złym kolorze, jak i złej głębi. Jeśli przekonwertowany materiał subsurface jest źle w sposób, którego nie da się wyregulować, sprawdź, czy te dwa pola nie zostały zamienione miejscami, zanim zmienisz cokolwiek innego.

One consequence worth noting: because Radius is a colour, an Arnold Radius of (1, 1, 1) is not "radius one" in any meaningful unit — it's "all three channels travel the same distance, and Scale decides what that distance is."

Jedna konsekwencja warta odnotowania: skoro Radius jest kolorem, Arnoldowe Radius (1, 1, 1) nie znaczy „promień jeden" w żadnej sensownej jednostce — znaczy „wszystkie trzy kanały przebywają tę samą odległość, a Scale decyduje, jaka to odległość".

The swap, both waysZamiana, w obie strony

Set the Arnold side and read the PxrSurface side. Then switch the wiring to see what you get when the two fields go in backwards — the mistake this section warns about.

Ustaw stronę Arnolda i odczytaj stronę PxrSurface. Potem przełącz okablowanie, by zobaczyć, co dostajesz, gdy oba pola idą na odwrót — błąd, przed którym ostrzega ta sekcja.

Wire it upOkabluj to

The multiplier Arnold doesn't haveMnożnik, którego Arnold nie ma

PxrSurface has a third term in the chain, and it lives somewhere you won't find by scrolling the Subsurface section: Unit Length, over on the Scattering Globals page. It defaults to 0.1.

PxrSurface ma trzeci człon w tym łańcuchu i mieszka gdzieś, gdzie nie znajdziesz go, przewijając sekcję Subsurface: Unit Length (długość jednostkowa), na stronie Scattering Globals. Domyślnie stoi na 0.1.

The full picture is therefore:

Pełny obraz wygląda więc tak:

How the distance is builtJak buduje się odległość With defaultsZ wartościami domyślnymi
AiStandardSurface Scale × Radius 1 × (1, 1, 1) = (1.0, 1.0, 1.0)
PxrSurface MFP Distance × MFP Color × Unit Length 10 × (0.851, 0.557, 0.395) × 0.1 = (0.851, 0.557, 0.395)

Which is the point: the two shaders ship with almost the same effective scattering distance. PxrSurface's Mean Free Path Distance of 10 looks alarmingly large next to Arnold's Scale of 1, but Unit Length quietly divides it back down by ten.

I o to chodzi: oba shadery przychodzą z niemal tą samą efektywną odległością rozpraszania. Mean Free Path Distance PxrSurface równe 10 wygląda alarmująco duże obok Scale Arnolda równego 1, ale Unit Length po cichu dzieli je z powrotem przez dziesięć.

A correction to an earlier version of these guidesKorekta do wcześniejszej wersji tych przewodników

An earlier version of the transition guide said that copying your Radius across and leaving the distance at 10 meant "light travelling ten times further than it did in Arnold." That was wrong — it ignored Unit Length, which cancels the factor of ten. The real trap is the next paragraph, and it's a bigger one.

Wcześniejsza wersja przewodnika przejścia mówiła, że skopiowanie Radius i pozostawienie odległości na 10 oznacza „światło podróżujące dziesięć razy dalej niż w Arnoldzie". To było błędne — pomijało Unit Length, które znosi ten czynnik dziesięć. Prawdziwa pułapka jest w następnym akapicie i jest większa.

What Unit Length is actually forDo czego naprawdę służy Unit Length

Unit Length exists because Mean Free Path numbers are conventionally quoted in millimetres — that's how measured scattering data for skin, marble and milk is published. But scenes aren't modelled in millimetres. RenderMan's default of 0.1 assumes your scene is in centimetres, so that a millimetre-flavoured MFP value lands correctly in a centimetre world.

Unit Length istnieje, bo liczby Mean Free Path są zwyczajowo podawane w milimetrach — tak publikowane są zmierzone dane rozpraszania dla skóry, marmuru i mleka. Ale sceny nie są modelowane w milimetrach. Domyślne 0.1 RenderMana zakłada, że twoja scena jest w centymetrach, tak by wartość MFP w milimetrach wylądowała poprawnie w świecie centymetrów.

Think of it asPomyśl o tym tak

A recipe written in grams being cooked in a kitchen that only has cup measures. The recipe isn't wrong and the kitchen isn't wrong, but something has to do the conversion — and if nothing does, you don't get a slightly-off cake, you get a completely different one.

Przepis napisany w gramach, gotowany w kuchni, która ma tylko miarki w postaci filiżanek. Przepis nie jest błędny i kuchnia nie jest błędna, ale coś musi wykonać konwersję — a jeśli nic tego nie robi, nie dostajesz lekko nieudanego ciasta, dostajesz zupełnie inne ciasto.

↔ Coming from ArnoldPrzesiadka z Arnolda

Arnold has no equivalent parameter. Its Radius and Scale are simply in scene units, whatever those happen to be, and it makes no assumption about what you modelled in. So the very first thing to check when converting a subsurface material is not a subsurface parameter at all — it's what scale your scene is modelled at, and whether Unit Length matches it. Model in metres and leave Unit Length at 0.1 and your scattering is out by a factor of 100. No amount of adjusting Mean Free Path Color will fix that, which is exactly why people spend an afternoon on it.

Arnold nie ma odpowiadającego parametru. Jego Radius i Scale są po prostu w jednostkach sceny, jakiekolwiek by one były, i nie robi żadnego założenia co do tego, w czym modelowałeś. Więc pierwszą rzeczą do sprawdzenia przy konwersji materiału subsurface wcale nie jest parametr subsurface — to w jakiej skali modelowana jest twoja scena i czy Unit Length jej odpowiada. Modeluj w metrach i zostaw Unit Length na 0.1, a twoje rozpraszanie będzie przesunięte o czynnik 100. Żadne dostrajanie Mean Free Path Color tego nie naprawi, i właśnie dlatego ludzie spędzają na tym popołudnie.

Unit Length also applies to the Single Scatter lobe, not just Subsurface — it's on the Scattering Globals page because it governs both.

Unit Length dotyczy też płata Single Scatter, nie tylko Subsurface — jest na stronie Scattering Globals, bo rządzi obydwoma.

Why red bleeds furthestDlaczego czerwony sięga najdalej

Look at the two shaders' default colours side by side and one of them is clearly opinionated:

Spójrz na domyślne kolory obu shaderów obok siebie, a jeden z nich jest wyraźnie stronniczy:

  • Arnold's Subsurface Radius defaults to (1, 1, 1) — perfectly neutral. All three channels travel the same distance.
  • PxrSurface's Mean Free Path Color defaults to (0.851, 0.557, 0.395) — red travels furthest, then green, then blue, roughly two-to-one from red to blue.
  • Subsurface Radius Arnolda domyślnie wynosi (1, 1, 1) — idealnie neutralnie. Wszystkie trzy kanały przebywają tę samą odległość.
  • Mean Free Path Color PxrSurface domyślnie wynosi (0.851, 0.557, 0.395) — czerwony sięga najdalej, potem zielony, potem niebieski, w przybliżeniu dwa do jednego od czerwonego do niebieskiego.

That PxrSurface default isn't arbitrary. It's approximately skin. Blood and tissue absorb blue and green light quickly while letting red through, so red light penetrates deepest and travels furthest before it comes back out. Every soft red glow you've seen at the edge of a backlit ear is that ratio.

Ten default PxrSurface nie jest przypadkowy. To w przybliżeniu skóra. Krew i tkanka szybko pochłaniają niebieskie i zielone światło, przepuszczając czerwone, więc czerwone światło penetruje najgłębiej i przebywa najdłuższą drogę, zanim wyjdzie z powrotem. Każda miękka czerwona poświata, jaką widziałeś na krawędzi podświetlonego ucha, to właśnie ta proporcja.

Think of it asPomyśl o tym tak

Putting a fingertip over a torch. The light that makes it through is red — not because the torch is red, but because red is the only part of it that survived the trip. The blue and green were stopped much earlier.

Przyłożenie opuszka palca do latarki. Światło, które przez niego przechodzi, jest czerwone — nie dlatego, że latarka jest czerwona, tylko dlatego, że czerwony to jedyna część, która przetrwała podróż. Niebieski i zielony zostały zatrzymane dużo wcześniej.

↔ Coming from ArnoldPrzesiadka z Arnolda

This is why a fresh PxrSurface subsurface lobe already reads as flesh while a fresh Arnold one reads as neutral wax. Neither is a better default — they start from different assumptions. Practically: if your Arnold material had a carefully authored Radius colour, port it and you'll overwrite PxrSurface's skin-shaped default, which is correct. But if your Arnold material left Radius at neutral because the look came from elsewhere, copying (1, 1, 1) across will strip the reddening out and leave you wondering where the warmth went.

Dlatego świeży płat subsurface w PxrSurface od razu czyta się jako ciało, a świeży w Arnoldzie jako neutralny wosk. Żaden default nie jest lepszy — zaczynają od różnych założeń. Praktycznie: jeśli twój materiał z Arnolda miał starannie dobrany kolor Radius, przenieś go, a nadpiszesz skórzany default PxrSurface, co jest poprawne. Ale jeśli twój materiał z Arnolda zostawiał Radius neutralny, bo look pochodził skądinąd, skopiowanie (1, 1, 1) wprost zdejmie zaczerwienienie i zostawi cię w niepewności, gdzie podziało się ciepło.

Three colours, three distancesTrzy kolory, trzy odległości

The same backlit slab under each default. Each channel is plotted by how far it gets before it is absorbed.

Ta sama podświetlona płyta pod każdym defaultem. Każdy kanał jest wykreślony wg tego, jak daleko dochodzi, zanim zostanie pochłonięty.

RedCzerwony GreenZielony BlueNiebieski
Mean Free Path Color

On Arnold's neutral default all three curves sit on top of each other and the slab glows grey — neutral wax. On PxrSurface's default red reaches roughly twice as far as blue, so the outer part of the glow has no blue left in it. That reddening at the edge is the whole reason the Pixar default reads as flesh straight out of the box.

Na neutralnym defaulcie Arnolda wszystkie trzy krzywe leżą jedna na drugiej, a płyta świeci na szaro — neutralny wosk. Na defaulcie PxrSurface czerwony sięga mniej więcej dwa razy dalej niż niebieski, więc zewnętrzna część poświaty nie ma już w sobie niebieskiego. To zaczerwienienie na krawędzi to cały powód, dla którego default Pixara od razu czyta się jako ciało.

Choosing a modelWybór modelu

Both shaders offer more than one way to compute all this. Arnold gives you three. PxrSurface gives you six. The defaults are not equivalent, and that mismatch does more damage than any single parameter.

Oba shadery oferują więcej niż jeden sposób liczenia tego wszystkiego. Arnold daje ci trzy. PxrSurface daje sześć. Defaulty nie są równoważne, i to niedopasowanie robi więcej szkód niż jakikolwiek pojedynczy parametr.

PxrSurface — Subsurface ModelPxrSurface — Subsurface Model What it computesCo liczy Closest Arnold typeNajbliższy typ Arnolda
Jensen Dipole (default)(domyślny) Diffusion only — the result of many bounces, approximated. Oldest and fastest.Tylko dyfuzja — przybliżony wynik wielu odbić. Najstarszy i najszybszy. diffusion
DEon Better Dipole Diffusion only, with a better-behaved falloff than Jensen.Tylko dyfuzja, z lepiej zachowującym się zanikiem niż Jensen. diffusion
Burley Normalized Diffusion and single scattering.Dyfuzja i pojedyncze rozproszenie. between diffusion and randomwalkmiędzy diffusion a randomwalk
Multiple Mean Free Paths Three separate scattering ranges at once — see below.Trzy osobne zakresy rozpraszania naraz — patrz niżej. no equivalentbrak odpowiednika
Exponential Path Traced Actually traces light through the interior. Accounts for single and zero scatter events too.Naprawdę śledzi światło przez wnętrze. Uwzględnia też zdarzenia pojedynczego i zerowego rozproszenia. randomwalk
Non-Exponential Path Traced As above, with a different distance distribution — often better on dense, detailed media.Jak wyżej, z innym rozkładem odległości — często lepszy na gęstych, szczegółowych materiałach. randomwalk / randomwalk_v2

The gap that matters: Arnold defaults to randomwalk, which brute-force traces the interior and has been Arnold's default for years — so almost every Arnold subsurface material you'll ever be handed was authored with it. PxrSurface defaults to Jensen Dipole, which is the oldest and most approximate of the six.

Luka, która ma znaczenie: Arnold domyślnie ustawia randomwalk, który brute-force'em śledzi wnętrze i jest domyślny w Arnoldzie od lat — więc niemal każdy materiał subsurface z Arnolda, jaki kiedykolwiek dostaniesz, powstał na nim. PxrSurface domyślnie ustawia Jensen Dipole, który jest najstarszym i najbardziej przybliżonym z sześciu.

Think of it asPomyśl o tym tak

A weather forecast versus standing outside. The forecast is fast and usually close enough. But ask it about one specific gust in one specific street and the approximation has nothing to say — you had to be there. Dipole models are the forecast; path traced models stand outside.

Prognoza pogody kontra stanie na zewnątrz. Prognoza jest szybka i zwykle wystarczająco bliska. Ale zapytaj ją o jeden konkretny podmuch na jednej konkretnej ulicy, a przybliżenie nie ma nic do powiedzenia — trzeba było tam być. Modele dipolowe to prognoza; modele path traced stoją na zewnątrz.

↔ Coming from ArnoldPrzesiadka z Arnolda

If your Arnold material used randomwalk, the honest equivalent is one of the Path Traced options, not the Jensen Dipole you'll find switched on when you open the shader. The approximations hold up on thick, rounded forms and fall apart exactly where you care most — thin geometry like ears, nostrils, fingers and eyelids. That's the usual reason converted skin looks fine on the cheek and rubbery at the edges.

Jeśli twój materiał z Arnolda używał randomwalk, uczciwym odpowiednikiem jest jedna z opcji Path Traced, nie Jensen Dipole, który znajdziesz włączony przy otwarciu shadera. Przybliżenia trzymają się na grubych, zaokrąglonych formach i rozpadają się dokładnie tam, gdzie zależy ci najbardziej — na cienkiej geometrii jak uszy, nozdrza, palce i powieki. To zwykły powód, dla którego przekonwertowana skóra wygląda dobrze na policzku, a gumowato na krawędziach.

⚠ One caveat about the distanceJedno zastrzeżenie co do odległości

Mean Free Path Distance is designed for the dipole models. Once you're in a Path Traced mode, RenderMan's own documentation advises against leaning on it — you drive the look from Subsurface Color and Mean Free Path Color instead. So switching model isn't just a quality dial; it changes which parameters you should be reaching for.

Mean Free Path Distance jest zaprojektowany dla modeli dipolowych. Gdy tylko jesteś w trybie Path Traced, własna dokumentacja RenderMana odradza poleganie na nim — look sterujesz zamiast tego z Subsurface Color i Mean Free Path Color. Więc zmiana modelu to nie tylko pokrętło jakości; zmienia, po które parametry powinieneś sięgać.

Multiple Mean Free Paths

This is the one PxrSurface mode with nothing resembling it in AiStandardSurface, and it's worth knowing about even if you never switch to it, because it explains a set of parameters that otherwise look like clutter.

To jedyny tryb PxrSurface, który nie ma niczego podobnego w AiStandardSurface, i warto go znać, nawet jeśli nigdy się na niego nie przełączysz, bo wyjaśnia zestaw parametrów, które inaczej wyglądają na bałagan.

Every other model gives you one mean free path, tinted per colour channel. Multiple Mean Free Paths gives you three complete sets — short, medium and long range — each with its own gain, its own colour and its own distance.

Każdy inny model daje ci jeden mean free path, zabarwiony per kanał koloru. Multiple Mean Free Paths daje ci trzy kompletne zestawy — zakres krótki, średni i długi — każdy z własnym gainem, własnym kolorem i własną odległością.

RangeZakres Gain Color DistanceOdległość
ShortKrótki Short Gain — 0 (0.9, 0.9, 0.9) — near whiteniemal biały 5
MediumŚredni Gain — 0 (0.830, 0.791, 0.753) — warm off-whiteciepły złamana biel 10
LongDługi Long Gain — 0 (0.8, 0, 0) — pure redczysta czerwień 20

Read those defaults and the intent is unmistakable: a pale, tight scatter close to the surface; a warm mid-range one; and a deep red one travelling four times further. It's the classic three-layer skin model, pre-loaded.

Przeczytaj te defaulty, a intencja jest jednoznaczna: blade, ciasne rozproszenie blisko powierzchni; ciepłe w średnim zakresie; i głęboko czerwone, przebywające cztery razy dalej. To klasyczny trójwarstwowy model skóry, wgrany fabrycznie.

Think of it asPomyśl o tym tak

Skin is not one substance. There's a thin, pale outer layer that scatters light barely at all, a thicker warm layer below it, and blood deeper still. Light that only just dips in comes back nearly white; light that goes deep comes back red. One mean free path has to average all of that into a single answer. Three lets you say it properly.

Skóra to nie jedna substancja. Jest cienka, blada zewnętrzna warstwa, która ledwie rozprasza światło, grubsza ciepła warstwa pod nią i krew jeszcze głębiej. Światło, które ledwie zanurkuje, wraca niemal białe; światło, które idzie głęboko, wraca czerwone. Jeden mean free path musi uśrednić to wszystko do jednej odpowiedzi. Trzy pozwalają powiedzieć to porządnie.

↔ Coming from ArnoldPrzesiadka z Arnolda

Two things change when you switch to this mode, and both surprise people. Mean Free Path Color is ignored entirely — the per-range colours replace it. And Subsurface Color becomes the medium-range colour specifically, rather than the colour of the whole lobe. So a value you ported from Arnold's Subsurface Color is now doing a narrower job than it was, and your ported Radius is doing no job at all.

Dwie rzeczy zmieniają się, gdy przełączysz się na ten tryb, i obie zaskakują ludzi. Mean Free Path Color jest całkowicie ignorowany — zastępują go kolory per zakres. A Subsurface Color staje się konkretnie kolorem zakresu średniego, zamiast kolorem całego płata. Więc wartość, którą przeniosłeś z Subsurface Color Arnolda, robi teraz węższą robotę niż wcześniej, a przeniesiony Radius nie robi żadnej.

All three gains default to 0, so the mode does nothing until you feed it. That's a reasonable way to explore it: bring up Long Gain on its own against a backlit ear and you'll see immediately what the red channel is for.

Wszystkie trzy gainy domyślnie stoją na 0, więc tryb nic nie robi, dopóki go nie nakarmisz. To rozsądny sposób, by go zbadać: podnieś sam Long Gain na tle podświetlonego ucha, a od razu zobaczysz, do czego służy czerwony kanał.

Three lobes, one skinTrzy płaty, jedna skóra

Each range plotted separately, with their sum on top. Loaded with PxrSurface's own default colours and distances — pale and tight, warm and mid, red and deep.

Każdy zakres wykreślony osobno, z ich sumą na wierzchu. Wgrane z własnymi domyślnymi kolorami i odległościami PxrSurface — blady i ciasny, ciepły i średni, czerwony i głęboki.

Pull the long gain to zero and the deep red disappears — the slab goes waxy and dead. Pull the short gain down instead and it loses the pale surface sheen that makes skin look like skin rather than like a red lamp. One mean free path has to average all three of these into a single answer, which is exactly why it can never quite get there.

Ściągnij long gain do zera, a głęboka czerwień znika — płyta robi się woskowa i martwa. Ściągnij zamiast tego short gain, a traci bladą powierzchniową poświatę, dzięki której skóra wygląda jak skóra, a nie jak czerwona lampa. Jeden mean free path musi uśrednić wszystkie trzy do jednej odpowiedzi, i właśnie dlatego nigdy nie może tego do końca osiągnąć.

Single Scatter is separateSingle Scatter jest osobny

In PxrSurface, Single Scatter is its own lobe on its own page, sitting next to Subsurface rather than inside it. It has a separate Gain, Color, Mean Free Path, Mean Free Path Color, its own refractive index (1.3), and a Blur control.

W PxrSurface Single Scatter to własny płat na własnej stronie, siedzący obok Subsurface, a nie wewnątrz niej. Ma osobny Gain, Color, Mean Free Path, Mean Free Path Color, własny współczynnik załamania (1.3) i kontrolkę Blur.

Single scattering is light that goes in, bounces once, and comes straight back out. That's what produces the crisp, directional glow through something thin and dense held up to a light — a hand over a torch, a slice of jade, wax with a candle behind it. Multi-bounce diffusion produces the soft even bloom; single scatter produces the structure inside it.

Single scattering to światło, które wchodzi, odbija się raz i wychodzi prosto z powrotem. To ono daje ostrą, kierunkową poświatę przez coś cienkiego i gęstego trzymanego pod światło — dłoń nad latarką, plaster jadeitu, wosk ze świecą za nim. Wielokrotna dyfuzja daje miękki, równomierny blask; single scatter daje strukturę wewnątrz niego.

Think of it asPomyśl o tym tak

Fog versus mist. Thick fog scatters headlights into a uniform glow — you can't tell where the beam points. Thin mist still shows you the beam. Diffusion is the fog; single scatter is the visible beam inside it.

Gęsta mgła kontra lekka mgiełka. Gęsta mgła rozprasza światła samochodu w jednolitą poświatę — nie widać, gdzie celuje wiązka. Lekka mgiełka wciąż pokazuje wiązkę. Dyfuzja to gęsta mgła; single scatter to widoczna wiązka wewnątrz niej.

↔ Coming from ArnoldPrzesiadka z Arnolda

Arnold doesn't split these out. randomwalk traces the interior properly and so accounts for single-bounce light as part of the same computation — there's no separate lobe to enable and nothing to forget. Which means when you convert, you may need both PxrSurface lobes to get back what one Arnold slider was giving you.

Arnold tego nie rozdziela. randomwalk poprawnie śledzi wnętrze, więc uwzględnia światło pojedynczego odbicia jako część tych samych obliczeń — nie ma osobnego płata do włączenia i niczego do zapomnienia. Co oznacza, że przy konwersji możesz potrzebować obu płatów PxrSurface, by odzyskać to, co dawał jeden suwak Arnolda.

Whether you need it depends on the model you picked:

Czy go potrzebujesz, zależy od wybranego modelu:

  • Jensen or dEon dipole — diffusion only. If your Arnold material had visible single-scatter character, you have to add the Single Scatter lobe yourself.
  • Burley Normalized — already covers single scattering.
  • Path Traced — already accounts for single and zero scatter events, same as randomwalk. Adding the separate lobe on top risks double-counting.
  • Jensen albo dEon dipole — tylko dyfuzja. Jeśli twój materiał z Arnolda miał widoczny charakter single-scatter, musisz sam dodać płat Single Scatter.
  • Burley Normalized — już obejmuje pojedyncze rozproszenie.
  • Path Traced — już uwzględnia zdarzenia pojedynczego i zerowego rozproszenia, tak jak randomwalk. Dodanie osobnego płata na wierzch grozi podwójnym liczeniem.

Its Mean Free Path is built the same way as Subsurface's — scalar × colour × the same shared Unit Length — so everything from the Unit Length section applies here unchanged.

Jego Mean Free Path jest zbudowany tak samo jak w Subsurface — skalar × kolor × ten sam wspólny Unit Length — więc wszystko z sekcji Unit Length stosuje się tu bez zmian.

Subsurface and the diffuse underneathSubsurface i diffuse pod spodem

Subsurface scattering is the surface's response to light. If the material is scattering light through its interior, that light is not also available to the ordinary diffuse layer — so as subsurface comes up, diffuse should come down.

Subsurface scattering jest odpowiedzią powierzchni na światło. Jeśli materiał rozprasza światło przez swoje wnętrze, to światło nie jest już dostępne dla zwykłej warstwy diffuse — więc gdy subsurface rośnie, diffuse powinien maleć.

Arnold does that for you. PxrSurface does not. It's the same story told at more length in the transition guide's who balances the layers section, and it shows up here as two specific adjustments that Pixar's own conversion shader has to make by hand:

Arnold robi to za ciebie. PxrSurface nie. To ta sama historia opowiedziana dłużej w sekcji kto balansuje warstwy przewodnika przejścia, a tutaj ujawnia się jako dwie konkretne korekty, które własny shader konwersji Pixara musi zrobić ręcznie:

  • Diffuse Gain gets multiplied by (1 − subsurface).
  • Subsurface Gain gets multiplied by (1 − sheen).
  • Diffuse Gain jest mnożony przez (1 − subsurface).
  • Subsurface Gain jest mnożony przez (1 − sheen).
↔ Coming from ArnoldPrzesiadka z Arnolda

So if you set Subsurface Gain to 1 and leave Diffuse Gain at its default of 1, you have a material lit twice — and it will read as washed out and strangely flat rather than obviously too bright, which makes it hard to diagnose. Take Diffuse Gain down as you bring Subsurface Gain up. And if the material also has Fuzz on it, that takes a bite out of the subsurface budget in turn.

Więc jeśli ustawisz Subsurface Gain na 1 i zostawisz Diffuse Gain na domyślnym 1, masz materiał oświetlony dwukrotnie — a będzie czytał się jako wyprany i dziwnie płaski, a nie ewidentnie za jasny, co utrudnia diagnozę. Obniż Diffuse Gain w miarę podnoszenia Subsurface Gain. A jeśli materiał ma też Fuzz, to z kolei odgryza kawałek budżetu subsurface.

You probably don't need thesePrawdopodobnie tego nie potrzebujesz

The rest of the panelReszta panelu

PxrSurface has roughly forty subsurface-related parameters against Arnold's five. Almost none of them are things you'll reach for, but an unexplained control is a distracting one — so here is what the rest of the panel is for, one line each.

PxrSurface ma z grubsza czterdzieści parametrów związanych z subsurface wobec pięciu w Arnoldzie. Niemal po żaden z nich nigdy nie sięgniesz, ale niewyjaśniona kontrolka rozprasza uwagę — więc oto do czego służy reszta panelu, po jednej linijce każda.

ControlKontrolka DefaultDomyślnie What it's forDo czego służy
Directionality 0 Whether light continues forward through the medium rather than scattering evenly. This does have an Arnold equivalent: Subsurface Anisotropy.Czy światło kontynuuje do przodu przez medium zamiast rozpraszać się równomiernie. To ma odpowiednik w Arnoldzie: Subsurface Anisotropy.
Bleed 0 Pushes light further through the medium while keeping fine detail — a gentler alternative to simply raising Mean Free Path.Przepycha światło dalej przez medium, zachowując drobny detal — łagodniejsza alternatywa niż zwykłe podniesienie Mean Free Path.
Diffuse Blend 0 Mixes a little plain diffuse into the result. Its stated purpose is fixing dark artefacts on objects with very sharp edges.Domiesza odrobinę zwykłego diffuse do wyniku. Jego deklarowanym celem jest naprawa ciemnych artefaktów na obiektach z bardzo ostrymi krawędziami.
Internal reflection indexWewnętrzny współczynnik odbicia 1.4 Makes light exit only roughly perpendicular to the surface, reflecting oblique paths back inside. Helps with over-bright curved areas.Sprawia, że światło wychodzi tylko z grubsza prostopadle do powierzchni, odbijając skośne ścieżki z powrotem do środka. Pomaga z prześwietlonymi zakrzywionymi obszarami.
Post Tint whitebiały A colour multiplier applied after the whole subsurface computation. An art-direction escape hatch, not a physical control.Mnożnik koloru zastosowany po całych obliczeniach subsurface. Furtka do art-direction, nie kontrolka fizyczna.
Diffuse Computation Switch 1 Falls back to cheap diffuse when the scattering distance is smaller than a pixel. A speed win on distant objects — but wrong for thin backlit ones, and not recommended with either Path Traced model.Przełącza na tanie diffuse, gdy odległość rozpraszania jest mniejsza niż piksel. Zysk szybkości na odległych obiektach — ale błędny dla cienkich, podświetlonych, i nie zalecany z żadnym modelem Path Traced.
Consider Backside onwłączone Whether the far side of the object participates. Turning it off makes objects behave as though thicker than they are.Czy dalsza strona obiektu bierze udział. Wyłączenie sprawia, że obiekty zachowują się, jakby były grubsze, niż są.
Follow Topology 0 How strongly surface normals steer the scattering.Jak mocno normalne powierzchni sterują rozpraszaniem.
Continuation Ray Mode OffWyłączone How rays handle geometry inside the object: ignore it, jump to the last surface, or collect light at every hit. The last option adds brightness and noise together.Jak promienie traktują geometrię wewnątrz obiektu: ignorują ją, skaczą do ostatniej powierzchni, albo zbierają światło przy każdym trafieniu. Ta ostatnia opcja dodaje jasność razem z szumem.
Max Continuation Hits 2 How many of those internal hits to test.Ile z tych wewnętrznych trafień testować.
Resolve Self Intersections offwyłączone For geometry that overlaps itself — keeps only the outermost surfaces active for scattering.Dla geometrii, która nachodzi sama na siebie — zostawia aktywne dla rozpraszania tylko najbardziej zewnętrzne powierzchnie.
Double Sided / Transmit Gain off / 0wyłączone / 0 Lets the lobe be lit from both sides, with a separate gain for the light coming through from behind.Pozwala oświetlać płat z obu stron, z osobnym gainem dla światła przechodzącego z tyłu.
Irradiance Tint / Roughness white / 0biały / 0 Adjusts the light before it gets scattered, rather than the result. Shared by Subsurface and Single Scatter.Dostraja światło zanim zostanie rozproszone, a nie wynik. Współdzielony przez Subsurface i Single Scatter.
Trace Subset emptypuste Restricts which objects participate in scattering. A pipeline tool for cases like a head and a separate jaw that shouldn't bleed into each other.Ogranicza, które obiekty biorą udział w rozpraszaniu. Narzędzie pipeline'owe na przypadki jak głowa i osobna szczęka, które nie powinny się w siebie rozlewać.

If you're converting a material rather than authoring a new one, leave every one of these alone. None of them has an Arnold counterpart to port from, so touching them means you're no longer converting — you're art-directing, which is fine, but do it after the conversion reads correctly.

Jeśli konwertujesz materiał, a nie tworzysz nowy, zostaw każdą z nich w spokoju. Żadna nie ma odpowiednika w Arnoldzie, z którego mogłabyś przenieść wartość, więc dotykanie ich oznacza, że już nie konwertujesz — art-directujesz, co jest w porządku, ale rób to po tym, jak konwersja zaczyna wyglądać poprawnie.

Conversion recipePrzepis konwersji

Putting the whole page together, in the order that avoids doing work twice. The first step is the one people skip.

Składając całą stronę razem, w kolejności unikającej podwójnej roboty. Pierwszy krok to ten, który ludzie pomijają.

  1. Check the scale of your scene, and set Unit Length to match. Not a subsurface parameter, but it multiplies every other number you're about to set. Centimetres means 0.1, the default. Anything else means changing it. Getting this wrong makes every step below unfixable.
  2. Set the model to match what Arnold was using. randomwalk → one of the Path Traced options; diffusion → a dipole. Do this before you type any numbers, because it changes which numbers matter.
  3. Move the two distance fields across, carefully. Arnold Radius → Mean Free Path Color. Arnold Scale → Mean Free Path Distance. If you're now in a Path Traced mode, expect to lean on the colours rather than the distance.
  4. Copy Subsurface Color and Gain. These are direct swaps and need no thought.
  5. Pay the energy bill. Bring Diffuse Gain down as Subsurface Gain goes up. Nothing does this for you. Skip it and everything after this point is judged against a doubly-lit material.
  6. Now look at it, against reference. Backlit, with a thin area in frame — an ear, a nostril, a finger. Front-lit subsurface hides every mistake you just made.
  7. Only then consider Single Scatter. If you're on a dipole model and the material has lost its crisp through-light, add it. If you're on Path Traced or Burley, you almost certainly shouldn't.
  1. Sprawdź skalę swojej sceny i ustaw Unit Length odpowiednio. To nie parametr subsurface, ale mnoży każdą inną liczbę, którą zaraz ustawisz. Centymetry oznaczają 0.1, default. Cokolwiek innego oznacza zmianę. Pomylenie się tutaj czyni każdy krok poniżej nienaprawialnym.
  2. Ustaw model tak, by pasował do tego, czego używał Arnold. randomwalk → jedna z opcji Path Traced; diffusion → dipol. Zrób to, zanim wpiszesz jakiekolwiek liczby, bo to zmienia, które liczby mają znaczenie.
  3. Przenieś oba pola odległości, ostrożnie. Radius Arnolda → Mean Free Path Color. Scale Arnolda → Mean Free Path Distance. Jeśli jesteś teraz w trybie Path Traced, spodziewaj się polegania na kolorach zamiast na odległości.
  4. Skopiuj Subsurface Color i Gain. To bezpośrednie zamiany i nie wymagają zastanowienia.
  5. Zapłać rachunek energetyczny. Obniż Diffuse Gain w miarę podnoszenia Subsurface Gain. Nic nie robi tego za ciebie. Pomiń to, a wszystko po tym punkcie jest oceniane na tle podwójnie oświetlonego materiału.
  6. Teraz spójrz na to, na tle referencji. Pod światło, z cienkim obszarem w kadrze — uchem, nozdrzem, palcem. Subsurface oświetlony z przodu ukrywa każdy błąd, który właśnie popełniłeś.
  7. Dopiero teraz rozważ Single Scatter. Jeśli jesteś na modelu dipolowym, a materiał stracił swoje ostre przelotowe światło, dodaj go. Jeśli jesteś na Path Traced albo Burley, niemal na pewno nie powinieneś.

Common pitfallsTypowe pułapki

⚠ "Subsurface does nothing, or completely floods the object"„Subsurface nic nie robi albo całkowicie zalewa obiekt"

Check Unit Length against the scale your scene is modelled at, before anything else. It's on the Scattering Globals page, it defaults to 0.1 assuming centimetres, and if your scene is in metres you're off by 100×. This is the single most common cause and the hardest to spot, because no subsurface parameter looks wrong.

Sprawdź Unit Length względem skali, w jakiej modelowana jest twoja scena, przed czymkolwiek innym. Jest na stronie Scattering Globals, domyślnie stoi na 0.1, zakładając centymetry, a jeśli twoja scena jest w metrach, jesteś przesunięty o 100×. To pojedyncza najczęstsza przyczyna i najtrudniejsza do wyłapania, bo żaden parametr subsurface nie wygląda na błędny.

⚠ "Skin looks fine on the cheek and rubbery at the ears"„Skóra wygląda dobrze na policzku i gumowato na uszach"

You're still on Jensen Dipole, PxrSurface's default, while the Arnold material was authored with randomwalk. Dipole approximations break down precisely on thin geometry. Switch to a Path Traced model.

Wciąż jesteś na Jensen Dipole, domyślnym w PxrSurface, podczas gdy materiał z Arnolda powstał z randomwalk. Przybliżenia dipolowe rozpadają się dokładnie na cienkiej geometrii. Przełącz na model Path Traced.

⚠ "The material is the wrong colour and the wrong depth at once"„Materiał ma zły kolor i złą głębię naraz"

You've likely swapped the fields. Arnold's Radius is the colour and belongs in Mean Free Path Color; Arnold's Scale is the distance and belongs in Mean Free Path Distance. The names invite exactly the opposite guess.

Prawdopodobnie zamieniłeś pola miejscami. Radius Arnolda to kolor i należy do Mean Free Path Color; Scale Arnolda to odległość i należy do Mean Free Path Distance. Nazwy zachęcają dokładnie do odwrotnego zgadnięcia.

⚠ "I'm changing Mean Free Path Color and nothing happens"„Zmieniam Mean Free Path Color i nic się nie dzieje"

You're in Multiple Mean Free Paths mode, which ignores that parameter entirely and uses the short, medium and long colours instead. Either switch model, or set the per-range colours.

Jesteś w trybie Multiple Mean Free Paths, który całkowicie ignoruje ten parametr i używa zamiast niego kolorów krótkiego, średniego i długiego zakresu. Albo zmień model, albo ustaw kolory per zakres.

⚠ "It looks washed out and flat rather than soft"„Wygląda wyprane i płasko zamiast miękko"

Diffuse Gain is still up. Arnold fades the diffuse layer as subsurface rises; PxrSurface leaves that to you, so the material is being lit twice. Take Diffuse Gain down.

Diffuse Gain wciąż jest podniesiony. Arnold wygasza warstwę diffuse w miarę wzrostu subsurface; PxrSurface zostawia to tobie, więc materiał jest oświetlany dwukrotnie. Obniż Diffuse Gain.

⚠ "There are dark patches along sharp edges"„Są ciemne plamy wzdłuż ostrych krawędzi"

A known artefact of the approximation on hard edges, and Diffuse Blend exists specifically to fix it — a small amount is usually enough. Worth trying before you rebuild geometry.

Znany artefakt przybliżenia na twardych krawędziach, i Diffuse Blend istnieje specjalnie po to, by to naprawić — zwykle wystarczy niewielka ilość. Warto spróbować, zanim przebudujesz geometrię.

⚠ "The through-light is too bright, or too noisy"„Światło przelotowe jest zbyt jasne albo zbyt zaszumione"

If you added Single Scatter on top of a Path Traced or Burley model, you're counting the same light twice — those models already include single scattering. If you need it, you're on a dipole.

Jeśli dodałeś Single Scatter na wierzch modelu Path Traced albo Burley, liczysz to samo światło dwukrotnie — te modele już uwzględniają pojedyncze rozproszenie. Jeśli go potrzebujesz, jesteś na dipolu.

Companion guidesPowiązane przewodniki

The rest of the shaderReszta shadera

This page goes deep on one layer. The AiStandardSurface → PxrSurface guide covers all of them, parameter by parameter, and PxrSurface vs Lama compares the two ways to build a material in RenderMan.

Ta strona głęboko analizuje jedną warstwę. Przewodnik AiStandardSurface → PxrSurface omawia je wszystkie, parametr po parametrze, a PxrSurface vs Lama porównuje dwa sposoby budowania materiału w RenderManie.