|
#1
|
|||
|
|||
multiple shadows using projector
I'm trying to create multiple shadows using the projector module. It seems however that only one projected can exist at one time. For example, the following code only produces one shadow (proj2):
Code:
enviro = viz.add('C:\\Program Files\\WorldViz\\Vizard30\\resources\\tut_ground.wrl') image1 = viz.add('cars\\carShadow.png') image2 = viz.add('cars\\carShadow2.png') proj1 = projector.add(image1) proj1.translate(0,0,0) proj1.rotate(0,90,0) proj1.affect(enviro) proj1.ortho(2,2) proj2 = projector.add(image2) proj2.translate(6,0,0) proj2.rotate(0,90,0) proj2.affect(enviro) proj2.ortho(2,2) Last edited by theuberk; 01-29-2008 at 07:20 AM. |
#2
|
|||
|
|||
You need to apply the second projection texture to a different texture unit. Try the following code:
Code:
import viz import projector viz.go() enviro = viz.add('tut_ground.wrl') image1 = viz.add('eyeshadow.jpg') image2 = viz.add('eyeshadow.jpg') proj1 = projector.add(image1) proj1.translate(1,0,10) proj1.rotate(0,90,0) proj1.affect(enviro) #Apply projection texture to default texture unit 1 proj1.ortho(2,2) proj2 = projector.add(image2) proj2.translate(-1,0,10) proj2.rotate(0,90,0) proj2.affect(enviro,2) #Apply projection texture to texture unit 2 proj2.ortho(2,2) |
#3
|
|||
|
|||
Perfect thanks! I didn't see anything about texture units in the documentation.
|
#4
|
|||
|
|||
I tried that out but it only seems to work for up to 3 shadows. I need it to work for up to 20 or so. Is this possible?
|
#5
|
|||
|
|||
The limit depends on your graphics cards. Some graphics cards support only 4 texture units. Some newer cards can support up to 16.
|
#6
|
|||
|
|||
I checked the specs on the graphics cards I'm using (2 x 8800GTS - 512MB in SLI), and numerous sources say that there are 64 texture mapping units on these cards. After reading THIS FORUM THREAD, I'm suspecting it may be an OpenGL problem, however I'm not sure at all. Any ideas what the problem might be?
|
#7
|
|||
|
|||
I believe OpenGL has a limit of 4 texture units when using the fixed function pipeline, which is what the projector plugin uses. To use more texture units you would have to use shaders for projecting the texture onto a model. There is a description about it on nVidias website.
|
#8
|
|||
|
|||
Quote:
Thanks, Omid |
#9
|
|||
|
|||
When you used the shadow module were all your avatars contained within the area defined by your SHADOW_AREA value. You can increase that value but then the resolution of the shadows will not be as sharp. You can then also increase the resolution of the shadows but that will use up more texture memory.
|
#10
|
|||
|
|||
But one should make a seperate Shadow.ShadowProjector objects for each avatar. Hence, as I get, SHADOW_AREA is not the area that all the shadows should be contained in, rather it represents a box that each shadow should fit in. Please correct me if I'm wrong.
I suspect that because ShadowProjector is using the projector module in wizard and the projector module is limited by OpenGL's limit of 4 textures on a surface, only 3 avatar shadow textures + the surface's own texture is being applied. Do you know of any alternatives? Best, Omid |
#11
|
|||
|
|||
Is there a better way than the projector plugin to implement shadows in vizard?
|
#12
|
|||
|
|||
Click here for a post that contains an example of dynamic projected shadows. It works reasonably well as long as the shadow casting objects are contained in a small area.
|
#13
|
|||
|
|||
Yes it worked. Thanks. My misunderstanding was that I thought SHADOW_POS and SHADOW_AREA refers to the shadow itslef.
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Shadows in Vizard | Vinicius Lima | Vizard | 4 | 07-26-2010 06:56 PM |
3d projector | Vinicius Lima | Vizard | 21 | 03-05-2008 04:51 PM |
Multiple labs | Plymouth | Vizard | 1 | 03-05-2007 10:43 AM |
Multiple Stages in one Program | Amit | Vizard | 7 | 11-11-2005 11:20 AM |
multiple timer trouble | exhale | Vizard | 2 | 04-26-2005 01:21 AM |