Mirror, Mirror


Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 1384

Warning: preg_match_all(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 700

Warning: Invalid argument supplied for foreach() in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 707

Warning: preg_match_all(): Compilation failed: invalid range in character class at offset 4 in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 700

Warning: Invalid argument supplied for foreach() in /homepages/u28471/devblog/wp-content/plugins/lightbox-plus/classes/shd.class.php on line 707

Why there haven't been ingame shots of the IFM model

During the development of the IFM mod for rFactor2 we stumbled upon a problem that looked like some messed up normals on a few places of the car. So we looked again at the car and its normals. Re-smoothened them over and over again and still got this nasty normals on the car. We were clueless what could cause the problem. Then we noticed that those normal issues only appeared on one half of the car and together with the fact, that we didn't have this issue with the unmapped model we came to the conclusion, that something on our mapping has to cause these normals issues.

CTDP maps its cars differently to most or all(?) other modders out there. For the 2006 mod there were three textures: one for the top of the car, one for the right and one for the left side of the car. Right and left had exactly the same mapping which has the following reason: While painting the design of a car you don't have to adjust it for the opposing side of the car. You just copy it over and mirror the sponsor logos and save memory as both drivers share the same textures. Ingame everyhting looks like it should and it saved our painters a lot of time.

We did the same style we used for 2006 with 1994. Just for IFM we experimented with a slightly different approach. We now have 2 instead of 3 textures for the car. Left and right aren't seperated textures anymore. They're both distributed over these 2 textures. But still one side is mirrored for easier painting so that our painters just have to move their design up/down and mirror the sponsor logos.

The aftermath of the normal issue

While this mapping style worked well with rF1 it does not with rF2. Something must have changed during development of rF2 and as soon as you'll have a bump tex stage in your shader those normal issues will appear on the mirror-mapped parts of the car. First we thought that we would have to redo the mapping and therefore the templates and of course all of the liveries that were already done. That would have been a real timekiller, but Andy came up with an idea: what if we use our old mapping and create a new mapping channel with a fixed mapping just for the normal map only? As our normal map is almost completely empty due to modelled body lines it was worth a try and just a tiny setback compared to redoing all liveries.

Mapping mirrored with normals issues Mapping not mirrored without issues

The workaround

So we created a second map channel with the fixed mapping and told the bump tex tage to use our channel 2 instead of 1. All other tex stages are still using channel 1. And it worked. The normal issues are gone and we're able to continue our work.

While our mapping method is different from other game producers or modders, using mirror mapped parts is a very common "tool" in game industry. If you know where to look, you can even recognize these normal issues on ISI stock content in rF2.

The aftermath part II

The sad part is that a 2006 convertion isn't possible anymore as we would have to redo the mapping of each car including all LODs plus creating new normal maps for those mappings. That is just way too time consuming. So until ISI doesn't fix this shader issue there's no chance for a 2006 revival for rF2.When we started modeling the cars for F1 2006 back in early 2006, we didn't even think about modeled bodylines or holes. These parts are all on our normal maps what makes a CTDP 2006 normal map much more complex compared to IFM and 1994.

Tips for the rF2 community

Also if you're doing your mapping CTDP style remember to create a clean mapping channel for your bump tex stage to avoid these problems. Even if you're doing your livery mapping without mirrored parts you may still encounter this problem on other parts of the car. Two parts (with one on the left and the other on the right side of the car) share the same texture mapping and most likely one of them has a mirrored mapping. As soon as you're using a shader with a bump tex stage those normal issues will occur, too. So either use a shader without bump tex stage - if thats possible - or fix your mapping for the bump tex stage.

We still hope ISI will fix that bug sooner or later (hopefully before they're going gold), but for now we have to live with this situation and have to make the best out of it.

Update 10 April 2012: Added another illustration of our mapping.

Published by

(CTDP)Dahie

Textures supervisor, Webdesign, Programming

6 thoughts on “Mirror, Mirror”

  1. Well, it looks like IFM definitely serves its purpose: to find out in what rF2 differs from rF1.
    It is indeed a pity that a 2006 would not be possible (without a lot of work, obviously), but let’s hope ISI will fix this issue so that you can think about 2006 conversion again. 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *