I have tried using some refraction scripts and various other methods, but am unable to achieve a good cloaked effect. The effect is supposed to be used to make a character nearly invisible, with their enemy only able to see a strange waviness (predator style).
Any information on how I might get this effect? (or better yet, an example file?)
Use the VideoTexture module (import it) and then render the camera output to a texture that the character has on it, with environment mapping. (Also try setting the alpha down).
Thanks, but that is basically what I tried for the refraction effect. The character stands out very much from the environment. Even more so than with just normal texturing!
Well, animated normal maps weren’t the trick, but I think I’ve about got it. I am just using basic refraction, but slightly dimmed to compensate for the light the object receives. refraction.blend
Well, my previous approach is no longer satisfactory for me. I wonder if it is possible to change the index of refraction (IOR) in the refraction script I am using?
######################################################
#
# Mirror.py Blender 2.49
#
# Tutorial for using Mirror.py can be found at
#
# www.tutorialsforblender3d.com
#
# Released under the Creative Commons Attribution 3.0 Unported License.
#
# If you use this code, please include this information header.
# modded slightly by mrhippieguy, now a refraction script(with normal maps!)
######################################################
# get current scene
scene = GameLogic.getCurrentScene()
# get the current controller
controller = GameLogic.getCurrentController()
# get object script is attached to
obj = controller.owner
# check to see mirror has been added
if obj.has_key("Mirror") == True:
# update the mirror
obj["Mirror"].refresh(True)
# if mirror hasn't been added
else:
# import VideoTexture module
import VideoTexture
# Check for optional Property named cam
if obj.has_key("cam") == True:
# get object list
objList = scene.objects
# get camera name
camName = obj["cam"]
# get camera object
cam = objList["OB" + camName]
else: # default is the active camera
# get active camera
cam = scene.active_camera
# get the mirror material ID
matID = VideoTexture.materialID(obj, "MA" + obj['material'])
#texture channel
if obj.has_key('channel') == True:
texChannel = obj['channel']
else:
texChannel = 0
# get the mirrortexture
mirror = VideoTexture.Texture(obj, matID, texChannel)
# get the mirror source
mirror.source = VideoTexture.ImageRender(scene,cam)
# save mirror as an object variable
obj["Mirror"] = mirror