De characters zijn in beide games 3d characters waarbij men gebruikt maakt van cel shading. De grafische stijl is grotendeels hetzelfde, ik denk alleen dat men tegen de limieten aan loopt qua mogelijkheden. Bij Fighter Z speel je in een kleine 2,5d omgeving. Het lijkt me dat deze RPG zich velledig in 3d afspeelt. Wat misschien iets ten koste gaat van de grafische stijl en mogelijkheid om een indrukwekkende cel shading toe te passen.
Hier wat informatie over cel shading en wat het eigenlijk best ingewikkeld maakt, al ziet het er in principe eenvoudig uit.
https://www.youtube.com/w...ntinue=2039&v=yhGjCzxJV3E
Zelf vindt ik de verschillen niet eens zo heel groot eerlijk gezegd, vooral niet als je kijkt naar de characters. De grootste verschillen zitten in de omgeving.
Cel-shading an-sich; dat wil zeggen, de wijze waarop belichting werkt mbv discrete color-banding, is niet echt heel erg complex. En waar bepaalde ink-lines wel/niet horen te komen is heel goed berekenbaar vanuit het hoekverschil tussen twee vlakken.
Beiden zijn enorm efficient direct op de grafische kaart uit te rekenen en te implementeren. Ik heb zelf een basale versie ervan ooit nog eens werkend gekregen in Quake III Arena. En dat was software-rendered op een 500 MHz systeem.
Waar het moeilijker wordt is 3D realistisch laten overkomen als ware het 2D cel
animatie.
Waar 3D animatie over het algemeen gestoeld is op vloeiende interpolatie bij 60 FPS, is het bij sterk gestyleerde 2D animatie, en vooral anime, zaak om op een
lage frame-resolutie van effectief 15 tot 20 FPS te gaan zitten en beeld-interpolatie
zelf af te handelen om de karakteristieke overdreven uitgesmeerde vegen te maken die de illusie van snel bewegende voorwerpen of ledematen voorstellen.
Op zich
ook niet moeilijk om een werkend concept voor te verzinnen. Dus bij deze een kleine aanzet:
Cel-shading heeft over het algemeen niet verschrikkelijk veel van je grafische kaart nodig en allerlei dure zaken zoals belichtingsmodellen die natuurgetrouwe lichtbreking bewerkstelligen, zijn ook niet ter sprake.
Dat geeft je voldoende ruimte om een frame of 5 op 60 FPS vooruit te renderen. Hiervan decimeer je zo'n 60% - dwz; die ga je niet (direct) tonen. Dit gaat het stotterige handmatige keyframe gevoel maken. Daarnaast kun je, omdat je effectief een klein aantal frames vooruit rekent, met de hand een alternatieve screen-space interpolatie maken om aan de ontbrekende frames invulling te geven. En deze gaat de klassieke 'snelheidsvegen' in het leven roepen.
Door de 3D modellen van spelers naar aparte buffers te renderen kun je boven water krijgen welke screen-pixels bij welk model horen; deze lokaal interpoleren met convolutie-matrices en vervolgens het geheel samen composen. Je kunt met zelfs een redelijk klein aantal niet al te dure kleinschalige convoluties een langere veeg maken door op een voorgaand geinterpoleerd frame 'door te bouwen.'
Heb je bepaalde delen van een model waar je dit effect niet op wilt toepassen? Dan markeer je die niet in deze secundaire pixel buffers en zet je deze ongewijzigd door. Vergt wat handmatige inspanning van je graphics artists omdat ze daarvoor speciale 'textures' moeten maken. Als die speciale textures niet alleen zwart/wit maar ook grijstinten toelaten, kun je daarmee zaken fine-tunen en verschillende delen een ander 'gewicht' meegeven wat aangeeft hoe sterk het effect daarop al dan niet moet spelen.
Met zoiets kun je een aardig eind komen, lijkt me.
En nee; qua latency gaat niemand het wezenlijk merken als je 5 frames op 60 FPS vooruit rendert. Dat is 80ms, wat nog steeds ver onder de gemiddelde menselijke minimale reactie tijd van 120ms ligt. Je moet echt te maken hebben met een actie-game met
extreem gevoelige twitch-play als dat een probleem gaat worden. En zelfs dan kun je altijd nog 1 of 2 frames verder terug schalen.
Het alternatief is dat je
vooruit moet gaan rekenen met bewegings-extrapolatie. Dat kan ook, maar is wss. significant duurder
en is meer foutgevoelig omdat de daadwerkelijke toekomstige realiteit dan af kan gaan wijken.
[Reactie gewijzigd door R4gnax op 22 juli 2024 16:27]