diff options
author | Campbell Barton <ideasman42@gmail.com> | 2008-09-26 23:00:49 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2008-09-26 23:00:49 +0400 |
commit | 3ad55e1541c8e901b57451206f73c4753aa2f4ee (patch) | |
tree | 5e93c4930380e41c64a9b5f9f742f4f266613dc2 /source/blender/blenloader/intern | |
parent | 8e1cf42dbd23d99db8e06617f37abec9ab5a146b (diff) |
nurbs surface resolution is now per segment rather then being distributed over the whole surface.
This is what 2D do alredy and makes resolution settings more like subsurf level.
- This makes it impossible to have a lower resolution output then the nurbs cage, however this dosnt seem a very useful feature.
- Using the do-versions from recent curve interpolation fix.
Tested with these files.
http://digilander.libero.it/pafurijaz/Files/Blender/Libellula.zip
http://digilander.libero.it/pafurijaz/Files/Blender/Martello.zip
http://digilander.libero.it/pafurijaz/Files/Blender/Punta.zip
http://digilander.libero.it/pafurijaz/Files/Blender/Phones.zip
http://digilander.libero.it/pafurijaz/Files/Blender/Tubo.zip
http://digilander.libero.it/pafurijaz/Files/Blender/Pipe.zip
http://digilander.libero.it/pafurijaz/Files/Blender/Tire.zip
http://digilander.libero.it/pafurijaz/Files/Blender/Cotton.zip
Diffstat (limited to 'source/blender/blenloader/intern')
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 85e45e87994..d38eed4d094 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -7879,6 +7879,15 @@ static void do_versions(FileData *fd, Library *lib, Main *main) for(nu= cu->nurb.first; nu; nu= nu->next) { if (nu) { nu->radius_interp = 3; + + /* resolu and resolv are now used differently for surfaces + * rather then using the resolution to define the entire number of divisions, + * use it for the number of divisions per segment + */ + if (nu->pntsv > 1) { + nu->resolu = MAX2( 1, (int)(((float)nu->resolu / (float)nu->pntsu)+0.5f) ); + nu->resolv = MAX2( 1, (int)(((float)nu->resolv / (float)nu->pntsv)+0.5f) ); + } } } } |