Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Amikor egy forráseszközt modellként konvertál, a konverter minden hálóhoz létrehoz anyagokat. Az anyagok létrehozásának módja felülírható. Alapértelmezés szerint azonban az átalakítás PBR-anyagokat hoz létre. Mivel minden forrásfájlformátum, például az FBX, saját konvenciókat használ az anyagok meghatározásához, ezeket a konvenciókat le kell képezni az Azure Remote Rendering PBR-anyagparamétereihez.
Ez a cikk felsorolja azokat a pontos leképezéseket, amelyeket az anyagok forrásegységekből futtatókörnyezeti anyagokká alakításához használnak.
glTF
A glTF 2.0 specifikáció szinte minden elemét támogatja az Azure Remote Rendering, az EmissiveFactor és az EmissiveTexture kivételével.
Az alábbi táblázat a leképezést mutatja be:
glTF | Azure Remote Rendering |
---|---|
baseColorFactor | albedoColor |
baseColorTexture | albedoMap |
metallicFactor | fémesség |
metallicTexture | metalnessMap |
roughnessFactor | Érdesség |
érdességTexture | érdességtérkép |
occlusionFactor | Elzáródás |
occlusionTexture | occlusionMap |
normalTexture | normalMap |
normalTextureInfo.scale | normalMapScale |
alphaCutoff | alphaClipThreshold |
alphaMode.OPAQUE | alphaClipEnabled = false, isTransparent = false |
alphaMode.MASK | alphaClipEnabled = true, isTransparent = false |
alphaMode.BLEND | isTransparent = true |
doubleSided | isDoubleSided |
emissiveFactor | - |
emissiveTexture | - |
A glTF minden textúrája rendelkezhet értékkel texCoord
, amelyet az Azure Remote Rendering-anyagok is támogatnak.
Beágyazott textúrák
A *.bin vagy *.glb fájlokba beágyazott textúrák támogatottak.
Támogatott glTF-bővítmény
Az alapfunkció-készlet mellett az Azure Remote Rendering a következő glTF-bővítményeket támogatja:
- MSFT_packing_occlusionRoughnessMetallic
- KHR_materials_unlit: Színanyagoknak felel meg. A megengedő anyagok esetében ajánlott ezt a bővítményt használni.
- KHR_materials_pbrSpecularGlossiness: Fémes érdességű textúrák helyett diffúz-specular-glossiness textúrákat biztosíthat. Az Azure Remote Rendering implementációja közvetlenül követi a bővítmény konverziós képleteit.
FBX
Az FBX formátum zárt forráskódú, és az FBX-anyagok általában nem kompatibilisek a PBR-anyagokkal. Az FBX a felületek összetett leírását használja számos egyedi paraméterrel és tulajdonságokkal, és nem mindegyiket használja az Azure Remote Rendering folyamat.
Fontos
Az Azure Remote Rendering modellkonvertálási folyamata csak az FBX 2011-et és újabb verziót támogatja.
Az FBX formátum az anyagok konzervatív megközelítését határozza meg, a hivatalos FBX specifikációban csak két típus létezik:
- Lambert - Nem gyakran használják már jó ideje, de továbbra is támogatott átalakítás Phong az átalakításkor.
- Phong – Szinte minden anyag és a legtöbb tartalomeszköz ezt a típust használja.
A Phong modell pontosabb, és az FBX-anyagok egyetlen modellje. Az alábbiakban FBX-anyagnak nevezzük.
Maya két egyéni bővítményt használ az FBX-hez az anyag PBR- és Stingray-típusainak egyéni tulajdonságainak meghatározásával. Ezek a részletek nem szerepelnek az FBX-specifikációban, ezért az Azure Remote Rendering jelenleg nem támogatja.
Az FBX-anyagok a Diffúz-Specular-SpecularLevel koncepciót használják, így a diffúz anyagmintából albedo térképpé alakításához ki kell számítanunk a többi paramétert, hogy kivonjuk őket a diffúzból.
Az FBX-ben minden szín és anyag sRGB-térben (más néven Gamma-térben) található, de az Azure Remote Rendering lineáris térrel működik a vizualizáció során, és a keret végén mindent visszaalakít sRGB-térzé. Az Azure Remote Rendering objektumfolyamat mindent lineáris térzé alakít át, hogy előkészített adatokként küldje el azokat a renderelőnek.
Ez a táblázat bemutatja, hogyan vannak leképezve a textúrák az FBX-anyagoktól az Azure Remote Rendering-anyagokig. Néhányat közvetlenül nem használnak, de más, a képletekben részt vevő textúrákkal (például a diffúz anyagmintával) kombinálva:
FBX | Azure Remote Rendering |
---|---|
AmbientColor | Occlusion Map |
Diffúziós szín | albedo, metalness |
Transzparensszín | albedo alfa csatornához használatos |
TransparencyFactor | albedo alfa csatornához használatos |
Opacitás | albedo alfa csatornához használatos |
SpecularColor | Albedo, Metalness, Roughness |
SpecularFactor | Albedo, Metalness, Roughness |
ShininessExponent | Albedo, Metalness, Roughness |
NormalMap | NormalMap |
Bump | normalmap-ra konvertálva |
EmissiveColor | - |
EmissiveFactor | - |
Önkifejezés ionColor | - |
DisplacementColor | - |
A fenti leképezés az anyagátalakítás legösszetettebb része, számos feltételezés miatt, amelyeket el kell készíteni. Ezeket a feltételezéseket az alábbiakban tárgyaljuk.
Az alábbiakban használt definíciók némelyike:
Specular
=SpecularColor
*SpecularFactor
SpecularIntensity
=Specular
. Piros ∗ 0,2125 +Specular
. Zöld ∗ 0,7154 +Specular
. Kék ∗ 0,0721DiffuseBrightness
= 0,299 *Diffuse
. Piros2 + 0,587 *Diffuse
. Zöld2 + 0,114 *Diffuse
. Kék2SpecularBrightness
= 0,299 *Specular
. Piros2 + 0,587 *Specular
. Zöld2 + 0,114 *Specular
. Kék2SpecularStrength
= max(Specular
. Piros,Specular
. Zöld,Specular
. Kék)
A SpecularIntensity képlet innen származik. A fényerő képletét ebben a specifikációban ismertetjük.
Érdesség
Roughness
képletből Specular
számítjuk ki és ShininessExponent
használjuk. A képlet a Phong spekuláris kitevő érdességének közelítése:
Roughness = sqrt(2 / (ShininessExponent * SpecularIntensity + 2))
Fémesség
Metalness
ezt a képletet a glTF-specifikációból Diffuse
számítja ki és Specular
használja.
Az elképzelés az, hogy megoldjuk az egyenletet: Ax2 + Bx + C = 0. Alapvetően a dielektromos felületek a fény körülbelül 4% -át tükrözik specular módon, a többi pedig diffúz. A fémes felületek diffúz módon nem tükrözik a fényt, de mind spekuláns módon. Ennek a képletnek van néhány hátránya, mivel nem lehet különbséget tenni a fényes műanyag és a fényes fémes felületek között. Feltételezzük, hogy a felület legtöbbször fémes tulajdonságokkal rendelkezik, ezért a fényes műanyag/gumi felületek nem feltétlenül a várt módon néznek ki.
dielectricSpecularReflectance = 0.04
oneMinusSpecularStrength = 1 - SpecularStrength
A = dielectricSpecularReflectance
B = (DiffuseBrightness * (oneMinusSpecularStrength / (1 - A)) + SpecularBrightness) - 2 * A
C = A - SpecularBrightness
squareRoot = sqrt(max(0.0, B * B - 4 * A * C))
value = (-B + squareRoot) / (2 * A)
Metalness = clamp(value, 0.0, 1.0);
Albedo
Albedo
az , Specular
és Metalness
a Diffuse
.
A Fémesség szakaszban leírtak szerint a dielektromos felületek a fény körülbelül 4%-át tükrözik.
Itt az a cél, hogy lineárisan interpoláljuk a színeket és a színeket Dielectric
az érték mint tényező használatávalMetalness
.Metal
Ha a fémesség, 0.0
akkor a spekulánstól függően sötét színű lesz (ha a spekuláns magas), vagy a diffúz nem változik (ha nincs spekuláns). Ha a fémesség nagy érték, akkor a diffúz szín eltűnik a spekuláris szín javára.
dielectricSpecularReflectance = 0.04
oneMinusSpecularStrength = 1 - SpecularStrength
dielectricColor = diffuseColor * (oneMinusSpecularStrength / (1.0f - dielectricSpecularReflectance) / max(1e-4, 1.0 - metalness))
metalColor = (Specular - dielectricSpecularReflectance * (1.0 - metalness)) * (1.0 / max(1e-4, metalness))
albedoRawColor = lerpColors(dielectricColor, metalColor, metalness * metalness)
AlbedoRGB = clamp(albedoRawColor, 0.0, 1.0);
AlbedoRGB
a fenti képlet kiszámította, de az alfa csatornához több számításra van szükség. Az FBX formátum homályos az átláthatóságról, és számos módon definiálható. A különböző tartalomeszközök különböző módszereket használnak. Itt az a cél, hogy egyesítsük őket egy képletben. Néhány objektumot azonban helytelenül transzparensként jelenít meg, ha nem közösen jönnek létre.
Ezt a következőből TransparentColor
TransparencyFactor
Opacity
számítjuk ki:
ha Opacity
definiálva van, akkor használja közvetlenül: AlbedoAlpha
= Opacity
más
ha TransparencyColor
definiálva van, akkor AlbedoAlpha
= 1,0 - ((TransparentColor.Blue
TransparentColor.Red
+ TransparentColor.Green
+ ) / 3,0) egyéb
if TransparencyFactor
, akkor AlbedoAlpha
= 1,0 - TransparencyFactor
Az utolsó Albedo
szín négy csatornával rendelkezik, és kombinálja a AlbedoRGB
AlbedoAlpha
.
Summary
Itt Albedo
összefoglalva nagyon közel lesz az eredetihez Diffuse
, ha Specular
közel van a nullához. Ellenkező esetben a felület fémes felületnek fog kinézni, és elveszíti a diffúz színt. A felület polírozottabb és fényvisszaverőbb lesz, ha ShininessExponent
elég nagy és Specular
fényes. Ellenkező esetben a felület durva lesz, és alig tükrözi a környezetet.
Ismert problémák
- Az aktuális képlet nem működik jól az egyszerű színes geometriához. Ha
Specular
elég fényes, akkor minden geometria szín nélkül reflektív fémfelületté válik. Ebben az esetben a kerülő megoldás az, hogy az eredetitől 30%-ra csökkenSpecular
, vagy az fbxAssumeMetallic konverziós beállítást használja. - A közelmúltban PBR-anyagokat adtak hozzá a
Maya
3DS Max
tartalomkészítő eszközökhöz. Egyéni, felhasználó által definiált feketedoboz-tulajdonságokat használnak az FBX-nek való átadáshoz. Az Azure Remote Rendering nem olvassa be ezeket a tulajdonságokat, mert nincsenek dokumentálva, és a formátum zárt forráskódú.