Delen via


Textuurbekleding

Texture wrapping verandert de basiswijze waarop Direct3D getextureerde polygonen rastert met behulp van de textuurcoördinaten die zijn opgegeven voor elk hoekpunt. Tijdens het rasteren van een veelhoek interpoleert het systeem tussen de patrooncoördinaten op elk van de hoekpunten van de veelhoek om de texelen te bepalen die voor elke pixel van de veelhoek moeten worden gebruikt. Normaal gesproken behandelt het systeem de textuur als een 2D-vlak, waarbij nieuwe texelen worden geïnterpoleerd door de kortste route te nemen van punt A binnen een textuur naar punt B. Als punt A de u, v-positie (0,8, 0.1) vertegenwoordigt en punt B zich bevindt op (0,1,0.1), ziet de interpolatielijn eruit als in het volgende diagram.

diagram van een interpolatielijn tussen twee punten

Houd er rekening mee dat de kortste afstand tussen A en B in deze afbeelding ongeveer door het midden van het patroon loopt. Als u textuurcoördinaatomslag in de u- of v-richting inschakelt, verandert de manier waarop Direct3D de kortste route tussen de textuurcoördinaten in de u- en v-richting waarneemt. Vanwege textuuromsluiting neemt de rasterizer per definitie de kortste route tussen de textuurcoördinaatsets aan, ervan uitgaande dat 0,0 en 1,0 samenvallen. Het laatste stukje is het lastige onderdeel: U kunt zich voorstellen dat het inschakelen van textuuromslag in één richting ervoor zorgt dat het systeem een textuur behandelt alsof het om een cilinder gewikkeld was. Denk bijvoorbeeld aan het volgende diagram.

diagram van een patroon en twee punten rond een cilinder

In de voorgaande afbeelding ziet u hoe wrapping in de u - richting van invloed is op hoe het systeem patrooncoördinaten interpoleert. Als u dezelfde punten gebruikt als in het voorbeeld voor normale of niet-uitgepakte patronen, ziet u dat de kortste route tussen punten A en B zich niet meer in het midden van het patroon bevindt; Het is nu over de grens waar 0,0 en 1.0 samen bestaan. Wrapping in de v-richting is vergelijkbaar, behalve dat het de textuur rond een cilinder verpakt die aan de zijkant ligt. Wrapping in zowel de u-richting als de v-richting is ingewikkelder. In deze situatie kunt u zich de textuur voorstellen als een torus of een donut.

De meest voorkomende praktische toepassing voor texture wrapping is het uitvoeren van omgevingstoewijzing. Meestal lijkt een object dat is getextureerd met een omgevingskaart zeer reflecterend, en toont het een gespiegelde afbeelding van de omgeving van het object in de scène. Maak voor deze discussie een kamer met vier muren, elk met een letter R, G, B, Y en de bijbehorende kleuren: rood, groen, blauw en geel. De omgevingskaart voor een dergelijke eenvoudige ruimte kan eruitzien als de volgende afbeelding.

illustratie van verticale strepen rood, groen, blauw en geel

Stel dat het plafond van de kamer wordt vastgehouden door een perfect reflecterende, vierzijdige pijler. Het toewijzen van de textuur van de omgevingskaart aan de pijler is eenvoudig; de pijler de indruk laten wekken dat het de letters en kleuren weerspiegelt, is niet zo eenvoudig. In het volgende diagram ziet u een draadframe van de pijler met de toepasselijke patrooncoördinaten in de buurt van de bovenste hoekpunten. De naad waar de wikkeling de randen van het patroon kruist, wordt weergegeven met een stippellijn.

diagram van een rechthoek met een stippellijn

Als wrapping is ingeschakeld in de u-richting, toont de getextureerde pilaar de kleuren en symbolen van de omgevingskaart correct en kiest de rasterizer op de juiste manier de kortste route tussen de textuurcoördinaten, ervan uitgaande dat de u-coördinaten 0,0 en 1,0 dezelfde locatie delen. De getextureerde zuil ziet eruit als de volgende afbeelding.

illustratie van een pijler die bestaat uit rode, groene, blauwe en gele kwadranten

Als textuurbekleding niet is ingeschakeld, interpoleert de rasterizer niet in de richting die nodig is om een geloofwaardige weerspiegelde afbeelding te creëren. In plaats daarvan bevat het gebied aan de voorzijde van de pijler een horizontaal gecomprimeerde versie van de texels tussen u-coördinaten 0.175 en 0,875, terwijl ze door het midden van de textuur gaan. Het wikkeleffect is verpest.

Verwar texture wrapping niet met de vergelijkbare textuur adresseermodi. Textuurverpakking wordt uitgevoerd voordat textuuradressering wordt toegepast. Zorg ervoor dat de patroonterugloopgegevens geen patrooncoördinaten bevatten buiten het bereik van [0.0, 1.0] omdat dit niet-gedefinieerde resultaten oplevert. Zie Patroonadresseringsmodi voor meer informatie over patroonadressering.

Verplaatsingskaart-omslag

Verplaatsingskaarten worden geïnterpoleerd door de tessellation-engine. Omdat de omhullingsmodus niet kan worden opgegeven voor de tessellatiemotor, kan textuuromhulling niet worden uitgevoerd met displacement maps. Een toepassing kan een set vertices gebruiken die ervoor zorgt dat de interpolatie in elke richting wordt omsloten. De toepassing kan ook de interpolatie opgeven die moet worden uitgevoerd als een eenvoudige lineaire interpolatie.

Texturen