Alle artikelen
Tutorials · 7 min read

Texeldichtheid goed gedaan: één standaard, teambreed afgedwongen

Wat texeldichtheid is, de pixels-per-centimeter-waarden die uitgebrachte games echt gebruiken, hoe je het meet met een checker-texture, wanneer je de regel breekt voor hero-assets, en hoe je één standaard afdwingt zodat de omgeving van een team als één wereld leest.

Close-up of a red brick wall with pale mortar joints

Kort gezegd: texeldichtheid is hoeveel texturepixels een echte oppervlakte-eenheid bedekken: en die consistent houden is het verschil tussen een omgeving die als één samenhangende wereld leest en een die eruitziet als assets uit vijf verschillende games aan elkaar geplakt. Dit artikel definieert het helder, geeft de pixels-per-meter-waarden die uitgebrachte games echt gebruiken, laat zien hoe je het meet met een checker-texture, legt de weinige plekken uit waar je de regel zou moeten breken, en zet uiteen hoe je één standaard teambreed afdwingt zonder elke UV met de hand te bewaken.

Een bakstenen muur: elke eenheid even groot, dezelfde detaildichtheid Een bakstenen muur is een texeldichtheidsles in steen: elke baksteen draagt dezelfde hoeveelheid detail per centimeter. Wanneer één asset in je scène twee keer de texeldichtheid van zijn buur heeft, voelen spelers de onjuistheid, ook al kunnen ze die niet benoemen.

Wat texeldichtheid eigenlijk is

Texeldichtheid is textureresolutie per oppervlakte-eenheid: meestal pixels per meter of per centimeter. Een 1024-pixel-texture op een muur van 4 meter is 256 px/m; dezelfde texture op een muur van 2 meter is 512 px/m, twee keer zo scherp.*

Een "texel" is een texturepixel. Texeldichtheid meet hoeveel ervan op een gegeven hoeveelheid oppervlak in de wereld landen. Het is de brug tussen je textureresolutie (een beeldeigenschap) en je modelschaal (een wereldeigenschap), en omdat het van beide afhangt, kunnen twee assets met identieke 2K-textures er wild verschillend uitzien als de een op een oppervlak van twee keer de grootte van de ander is gemapt. Die mismatch is wat je oog vangt: een scherpe deur naast een wazige muur, of een vlijmscherpe krat tegen een pappige vloer. Consistentie, niet maximale resolutie, verkoopt een verenigde look.

De waarden die uitgebrachte games gebruiken

Een gangbare standaard is 512 px/m (≈5,12 px/cm) voor algemene omgevingsoppervlakken, dalend naar 256 voor groot ver terrein en stijgend naar 1024+ voor hero-props waar de camera dichtbij komt. Kies je basislijn op basis van hoe dichtbij de speler komt.*

Er is geen universeel getal (het wordt bepaald door je doelplatform, cameraafstand en geheugenbudget), maar de werkbereiken zijn goed vastgesteld:

  • Groot terrein / verre architectuur: ~256 px/m: de speler komt nooit dichtbij, dus detail daar is verspild geheugen
  • Algemene speelbare omgeving (muren, vloeren, midden-props): ~512 px/m is een gangbare, comfortabele basislijn
  • Hero-assets waar de camera op inzoomt (een sleutel-prop, een detail op gezichtshoogte): 1024 px/m of hoger
  • First-person-handen / wapens: de hoogste van allemaal, omdat ze altijd centimeters van de camera zijn

Het principe achter de getallen: texeldichtheid moet schalen met hoe dichtbij de speler komt. Stel je basislijn in vanuit je krapste gangbare cameraafstand, stap dan af voor dingen die altijd ver weg zijn. Een studio kiest één basisgetal, schrijft het in de art bible, en houdt elke algemene asset eraan.

Hoe je het meet

Pas een checker-texture met een bekende pixels-per-vierkant-waarde toe op je model op zijn uiteindelijke schaal. Als de vierkanten er op elke asset in een scène even groot uitzien, is je texeldichtheid consistent: mismatchende vierkantgroottes onthullen het probleem meteen.*

De checker- (of "UV-grid"-)texture is hier het enkele nuttigste gereedschap. Het is een getegeld patroon van gekleurde vierkanten; wanneer je het aan je assets toewijst op de uiteindelijke wereldschaal, staat elk vierkant voor een vast aantal texels. Consistente dichtheid betekent dat de vierkanten dezelfde fysieke grootte hebben over elk oppervlak. Een muur waarvan de vierkanten twee keer zo groot zijn als die van de vloer is ondergetextured ten opzichte van de vloer: nu kun je de dichtheidsmismatch zien in plaats van gokken. De meeste DCC-tools en engines hebben een texeldichtheidschecker of een script dat px/m direct rapporteert; hoe dan ook is de checker-texture de snelle visuele buikgevoel-check die elke artist op één toetsaanslag zou moeten houden.

Het blootliggende beton-en-staal-geraamte van een gebouw in aanbouw Echte bouw houdt elk element aan gedeelde toleranties zodat de stukken passen. Een texeldichtheidsstandaard is hetzelfde idee voor oppervlakken: een gedeelde spec die onafhankelijk gebouwde assets als één structuur laat lezen.

Wanneer je de regel breekt

Verhoog de dichtheid op hero-assets waar de camera bij blijft hangen, en verlaag die op dingen die altijd ver weg of piepklein op het scherm zijn. Uniforme dichtheid overal verspilt geheugen aan het verre en laat het nabije verhongeren: consistentie betekent consistent VOOR ZIJN CAMERAAFSTAND, niet overal identiek.*

"Consistente texeldichtheid" betekent niet één getal voor de hele game: het betekent een bewuste dichtheid passend bij de rol van elke asset, zonder toevallige mismatches tussen buren. Het hero-beeld waar de speler naartoe loopt verdient 1024+; de bergsilhouet twee kilometer verderop is prima op 128. De vaardigheid is dat de afstappen opzettelijk en gedocumenteerd zijn, niet het willekeurige resultaat van wie wat modelleerde. Een nuttig mentaal model: begroot je texturegeheugen zoals je polygonen begroot, geef het uit waar de camera zijn tijd doorbrengt, en laat de plekken verhongeren die hij nooit bezoekt.

Het teambreed afdwingen

Een standaard die niemand kan controleren is een standaard die niemand volgt. Maak hem afdwingbaar (een gedeelde checker-texture, een dichtheidsrapport-script in de importstap, en een spec van één regel in de art bible) zodat conventieconforme assets de weg van de minste weerstand zijn.*

Hier houdt texeldichtheid op een solo-ambachtsvaardigheid te zijn en wordt het een pipeline-probleem. In een team zal de dichtheid afdrijven op het moment dat het afhangt van elke artist die een getal onthoudt, omdat mensen op verschillende schalen modelleren, met verschillende instellingen importeren, en verschillend op het oog schatten. Wat de lijn vasthoudt, is tooling:

  • Een gedeelde checker-texture die iedereen op dezelfde manier toewijst, zodat mismatches in elke review zichtbaar zijn.
  • Een dichtheidscheck bij import: een script dat px/m rapporteert en alles buiten de afgesproken band markeert voordat het de library binnenkomt.
  • Een spec van één pagina: het basisgetal, de hero- en terreinuitzonderingen, en de checker-workflow, in de art bible die iedereen op dag één leest.

Consistentie is ook een vindbaarheidsprobleem: om assets aan een standaard te houden moet je ze allemaal kunnen zien, vergelijken en de uitschieter spotten: daarom maakt een content browser die consistente thumbnails rendert en je een enorme library laat sorteren, zoals die in Numivo, texeldichtheidsdiscipline stilletjes makkelijker: de vreemde eend is in één oogopslag zichtbaar in plaats van drie maanden later in-engine ontdekt.

Veldgetallen die het stelen waard zijn

  • Algemene omgevingsbasislijn: ~512 px/m (≈5,12 px/cm)
  • Ver terrein / verre architectuur: ~256 px/m, dichterbij verspilt geheugen
  • Hero- / dichte-camera-assets: 1024 px/m en hoger
  • Het gereedschap dat het zichtbaar maakt: een checker- / UV-grid-texture op de uiteindelijke schaal
  • Afdwinging die blijft plakken: checker + import-tijd-rapport + spec van één pagina, niet geheugen en gezeur

Mini-FAQ

Hogere texeldichtheid is altijd beter, toch? Nee, het kost texturegeheugen en streamingbandbreedte voor detail dat de speler misschien nooit van dichtbij ziet. Voorbij de resolutie die de camera op die afstand kan oplossen, zijn extra texels pure verspilling. Match de dichtheid aan de cameraafstand, niet aan "zo hoog mogelijk".

Verandert trim-sheet- en tiling-texturing dit? Het verandert hoe je het doel raakt, niet het doel zelf. Tiling-textures en trim sheets zijn vaak de makkelijkste manier om de dichtheid consistent te houden over grote oppervlakken, omdat hetzelfde sheet op dezelfde schaal overal waar het gebruikt wordt dezelfde dichtheid geeft.

Hoe repareer ik een al inconsistente library? Meet een representatief sample met de checker om de spreiding te vinden, spreek een basislijn af, en repareer opportunistisch: her-densificeer assets naarmate scènes ze binnentrekken, in plaats van een heroïsche volle-library-herpas te proberen. De assets die ertoe doen worden eerst gerepareerd omdat het die in gebruik zijn.

En mobiel of de Switch? Zelfde concept, lagere basislijnen: je zou 256 px/m als algemene standaard kunnen draaien in plaats van 512. De discipline is identiek; alleen de getallen bewegen om in het geheugenbudget te passen.

Texeldichtheid is een van die glansloze fundamenten die professioneel ogende omgevingen scheidt van studentikoze. Kies een basislijn, maak hem zichtbaar met een checker, dwing hem af met een check aan de deur, en je onafhankelijk gebouwde assets zullen eindelijk als één geloofwaardige wereld lezen.