Is it possible? - Fan shadows


(Kaziganthe) #1

This is really more of a question of curiosity rather than actual necessity, but is it possible to have a light behind, say, a rotating fan (made of brushes), and have the shadows rotate on the floor. I know that you can do this with a shader, but I was just wondering.


(obsidian) #2

Certainly not with real-time dynamic lighting, Quake III does not support this… you’ll have to wait for DooM III. Of course, it’s quite easy to fake this with either a shader or better yet, the _decal entity.

You’ll find _decal entities with one of the later versions of GtkRadiant (such as 1.4.0) as well as instructions on how to set them up in the entities.def file.


(ratty redemption) #3

@obsidian, could you or someone else, paste in here the relevant .def code for _decal ents as Im personally still using gtk 1.2.13, although I have the 2.5.13 "the world of tomorrow" release of q3map2, surely I can just add it to my existing .def file, if Im using recent .dll`s to complie my maps?

I intend to upgrade to gtk 1.4X when I move over to ja mapping, but that will be after I finish my last wolf map.


(pazur) #4

i would go for a decal shader with tcMod rotate and a blendfunc blend stage. i think that in q3a and rtcw there are such shaders “ready to use” :slight_smile:


(LordDaimos) #5

I don’t think that there is a such read to use in q3a but i’ve seen an example of this effect and it looks damn amazing :).

/LordDaimos


(ratty redemption) #6

rtcw does have one…

textures/decals/fan_shadow
{
	surfaceparm nomarks
	polygonOffset
	entityMergable
	{
		map textures/decals/fan_shadow.tga
		blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
		rgbGen vertex
		tcMod rotate 256
		alphaGen vertex
	}
}

the textures alpha channel is quite blurred, which makes it look more realistic, if the light behind the fan is some distance away from where the shadow is to be drawn.

edit: I don`t think the entityMergable is needed unless the shadow is going to be overlapping over decals… perhaps ydnar can clarify that?


(Kaziganthe) #7

So then q3map2 is limited to faking dynamic lighting with lightmaps?


(MindLink) #8

not with lightmaps, with _decals, that’s a different thing, but a fake nevertheless… :slight_smile:


(MindLink) #9

Ah btw concerning the definition of the _decal entity :

/*QUAKED _decal (0 1.0 0) ?
-------- KEYS --------
“target” : the name of the entity targetted at for projection
-------- SPAWNFLAGS --------
(none)
-------- NOTES --------
Compiler-only entity that specifies a decal to be projected. Should contain 1 or more patch meshes (curves) and target an info_null entity. The distance between the center of the _decal entity and the target is the axis and distance of projection.
*/

For more information simply use the search feature here, there have been plenty of threads concerning this stuff :slight_smile:


(Zombie13) #10

http://zombie.bhdnet.com/images/shot0122.jpg

here this should give you a nice visual idea of the fan _decal

{
qer_editorimage textures/muckaround/fan_decal.tga
surfaceparm nomarks
surfaceparm trans
surfaceparm nolightmap

polygonOffset
cull none
nopicmip
{
clampmap textures/muckaround/fan_decal.tga
blendFunc GL_ZERO GL_ONE_MINUS_SRC_COLOR
tcMod rotate -360
rgbGen indentity
}
}


(ratty redemption) #11

@MindLink, thanx for the .def code :slight_smile:

@Zombie13, nice looking map… and am I right in thinking a single _decal can be projected onto multiple brush and patch faces on different planes? that`s very cool if they can :slight_smile:


(MindLink) #12

a _decal projects onto everything in the direction it’s specified to. I actually don’t know if it projects through brushes or if it stops at the first brushes hit, gotta ask y for more information on this.


(ratty redemption) #13

understand and thanx :slight_smile:


(Kaziganthe) #14

I was well aware of how to do this stuff, but was just wondering about the capabilities of Q3map2. And what I was saying was that q3map2 uses several lightmaps to fake dynamic lighting, i.e. a flickering light. Unless I misunderstood somewhere along the line.


(ratty redemption) #15

@Kaziganthe, so are you thinking that maybe those lightmaps could have animated shadows on them, like a rotating fan shadow? …if so, what would the advantage of that being over a rotating decal? …just curious :slight_smile:


(Lil Killa) #16

I was just curious… Once I learned of decals a while back I thought about how they could be used for the shadows of moving objects and came to a new conclusion just now…

What if… HWat if you made the decal of the fan shadow but left out the rotate? instead couldn’t you just “hook” it it to the func_rotate so that the two would move together and therefore look much more realistic?


(ratty redemption) #17

nice idea but arent the _decal ents compile only? ie once they have been baked into the bsp they cant move.


(Lil Killa) #18

I smell… test map :slight_smile:

EDIT:

It works and looks cool at the same time :slight_smile:


(ratty redemption) #19

wow, can you post the shader? and entity keyvalues? :slight_smile:


(Lil Killa) #20

just a regular func_rotating (didn’t mess with anything) don’t foget your origin brush either :wink:

then this shader which came with the game (Jedi Academy)

textures/decals/sign_decal3
{
	qer_editorimage	textures/decals/sign_decal3
	polygonOffset
	q3map_nolightmap
	q3map_onlyvertexlighting
    {
        map textures/decals/sign_decal3
        blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
    }
}