![]() |
#1
|
|||
|
|||
![]()
Hi,
Is it possible to do multi texturing in Vizard, not as in blend-mode, but as overlay? I have attached 2 sites which captures exactly what I have in mind. Multi Texturing in openGL; http://www.kraftwrk.com/multi_texturing.htm http://www.cs.auckland.ac.nz/~jvan00.../multitex.html I hope that I posted this in the right forum. Kind Regards, Iwan |
#2
|
|||
|
|||
Hi,
I'm not sure what you mean by "overlay". The examples you pointed to apply multiple textures to a mesh and blend them together. This technique is possible within Vizard. To apply multitple textures on a node just do the following: Code:
node.texture(tex1,'',0) #Apply to texture unit 0 (default) node.texture(tex2,'',1) #Apply to texture unit 1 Code:
m = viz.Transform.scale(20,20,1) node.texmat(m,'',1) #Scale texture coordinates of unit 1 (detail texture) Code:
tex.wrap(viz.WRAP_S,viz.REPEAT) tex.wrap(viz.WRAP_T,viz.REPEAT) Code:
node.texblend(0.5,'',1) #Blend texture 1 50% with texture 0 Hope this helps. |
#3
|
|||
|
|||
![]()
Hi,
Firstly, thanks for the reply. In order to attempt this blend-multi texture, I created a model out of Candor Canyon on mars, and I textured it. The blending does work, but the repeating texture does not. for the detail texture I used a 64 x 64 image. I was hoping this small texture would repeat itself over large terrain. There are 2 screenshot attached; no_detail.jpg - plain texture.. no additional texture applied not_tiled.jpg - I could see here that my 64 x 64 texture is fully streched across the terrain. the terrain has only 1 UV map applied to it. I attached my script, I couldn't figure out what did I do wrong??? could you have aa look and see why I couldn't repeat my small texture across the terrain? #--------------------------------------------------------------------- import viz viz.go() viz.enable(viz.CULL_FACE) viz.enable(viz.CULLING) #loading textures tex1 = viz.add('texModified.jpg') tex2 = viz.add('detail.jpg') tex2.wrap(viz.WRAP_S,viz.REPEAT) tex2.wrap(viz.WRAP_T,viz.REPEAT) #loading the objects stage = viz.add('output.osg') stage.enable(viz.CULL_FACE) stage.enable(viz.CULLING) stage.texture(tex1,'',0) #Apply to texture unit 0 (default) stage.texture(tex2,'',1) #Apply to texture unit 1 stage.texblend(0.8,'',1) #Blend texture 1 50% with texture 0 #loading the skybox env = viz.add(viz.ENVIRONMENT_MAP,'mars_sky\mars_sky.jpg ') sky = viz.add('skydome.dlc') sky.texture(env) #--------------------------------------------------------------------- Thanks for your help! Have a great day. Regards, Iwan |
#4
|
|||
|
|||
Hi,
The texture coordinates were probably not exported for the second texture unit. Try setting the texture matrix like I mentioned in my previous post. Code:
m = viz.Transform.scale(20,20,1) #Repeat 20 times in both directions stage.texmat(m,'',1) |
#5
|
|||
|
|||
Hi,
I just double checked to make sure this works and was able to create this sample script. Code:
import viz viz.go() #Create quad and place it in front of user quad = viz.add(viz.TEXQUAD,pos = (0,1.8,3)) #Add main texture tex1 = viz.add('ball.jpg') #Add detail texture in repeat mode tex2 = viz.add('gb_noise.jpg',wrap=viz.REPEAT) #Apply textures to quad quad.texture(tex1) quad.texture(tex2,unit=1) #Blend textures 50% quad.texblend(0.5,unit=1) #Repeat detail texture 20 times quad.texmat(viz.Transform.scale(20,20,1),unit=1) |
#6
|
|||
|
|||
![]()
Hi,
Thank you for your speedy response. It didn't work initially because I missed 2 lines!!! Thanks for pointing this one out to me. Please look at the screenshots attached, the detail looks great. Detail texture may look bit repetitive for now, but it will change soon! I attached my script with some changes in it, I had to bring the blend value to 0.065 to get the result that I wanted. #----------------------------------------------------- viz.go() #loading textures tex1 = viz.add('texModified.jpg') tex2 = viz.add('detail.jpg') tex2.wrap(viz.WRAP_S,viz.REPEAT) tex2.wrap(viz.WRAP_T,viz.REPEAT) #loading the objects stage = viz.add('output.osg') stage.enable(viz.CULL_FACE) stage.enable(viz.CULLING) stage.texture(tex1,'',0) #Apply to texture unit 0 (default) stage.texture(tex2,'',1) #Apply to texture unit 1 stage.texblend(0.065,'',1) #Blend texture 1 0.065% with texture 0 m = viz.Transform.scale(5000,5000,1) #Repeat 5000 times in both directions stage.texmat(m,'',1) #loading the skybox env = viz.add(viz.ENVIRONMENT_MAP,'mars_sky\mars_sky.jpg ') sky = viz.add('skydome.dlc') sky.texture(env) #disabling head-light viz.disable(viz.LIGHT0) #------------------------------------------------------------------- Thank you for your assistance! have a great day. Regards, Iwan |
#7
|
|||
|
|||
Hi,
Looks good. I just realized that the texblend operation is not the same as the blending in the example website you posted. I've attached another example that uses a shader to perform the correct blending. This example assumes the detail texture is gray scale. Let me know if this is better. |
#8
|
|||
|
|||
Error compiling ... ?
Hi,
I tried this just now and I get this error everytime I run it. The Blending looks okay though. I'll play around with it more. I have CG toolkit 1.4.1 installed. ----------------------------------- FRAGMENT glCompileShader "" FAILED FRAGMENT Shader "" infolog: ERROR: 0:6: 'texture2D' : no matching overloaded function found ERROR: 0:6: '=' : cannot convert from 'const float' to '4-component vector of float' ERROR: 0:7: 'texture2D' : no matching overloaded function found ERROR: 0:7: 'assign' : cannot convert from 'float' to 'FragColor 4-component vector of float' ERROR: 4 compilation errors. No code generated. glLinkProgram "" FAILED Program "" infolog: Link failed. All shader objects have not been successfully compiled. ------------------------- |
#9
|
|||
|
|||
Hi,
Sorry about that. Replace the the code in the shader file with the following: Code:
uniform sampler2D BaseTexture; uniform sampler2D DetailTexture; void main (void) { vec4 detailColor = texture2D(DetailTexture, gl_TexCoord[1].xy); gl_FragColor = (texture2D(BaseTexture, gl_TexCoord[0].xy) * detailColor.r) * 2.0; } |
#10
|
|||
|
|||
![]()
Hi,
It works! Have a look at the screenshots attached. The fog is completely gone?!? and the terrain is somehow very-brightly lit!! (perhaps this is caused by uniform intensity command?)In which actually looks nice, I could turn down the spot light color a bit to get the brownish feeling on the planet. I like the result! heaps better than normal blending. Thank you! From high elevation the terrain looks bit funny with tiled detail texture (oh well). From right above the ground... the terrain looks amazing!! What do you think? Regards, Iwan |
#11
|
|||
|
|||
Hi,
I agree, the close-up shot looks really cool! But the tiling is noticeable from far away. The second example you posted would fix the tiling problem, but it might be harder to create the textures for it. The fog is gone because you are using a shader. You will have to implement the fog in the shader. Let me know if you need help with this. The terrain is bright because of the scale applied. In the shader try changing the scale parameter from 2.0 to 1.0. If you end up doing this, then you don't even need the shader anymore, plus the fog will work again. Either way, I just added the ability to set all the texture combine properties from within Vizard. This should be available in the next release. |
#12
|
|||
|
|||
![]()
Hi,
I would definitely need your expertise in this matter, since you solved the shader problem within a couple of minutes while it would probably take me 2 months alone on it. Fog shader would be great, what about fractal animated layered fogs? would this be too much asking for next release??? ...perhaps something like; fog1 = viz.add(viz.fogshader, 'someFractalImage.png') #finite fog shader fog1.size(10,1,10) #fog plane 100 unit square fog1.transform(0,2,0) #putting the fog plane 2 unit up fog1.animate(1,0,0, 4) #animating the fog 4 unit/sec in x direction fog1.intensity(1.5) fog1.amplitude(1.5) # strength of someFractalImageImage.png fog1.color(0.92, 0.92, 0.98) #blue-ish color hmmm... somehow this ideas might go futher to fractal animated cloud plane ![]() I wish you guys all the best in improving vizard. *edited* for incorrect grammar :P Regards, Iwan |
#13
|
|||
|
|||
Here is a version of the shader that implements exponential fog:
Code:
uniform sampler2D BaseTexture; uniform sampler2D DetailTexture; const float LOG2E = 1.442695; void main (void) { float fog = exp2(gl_Fog.density * gl_FogFragCoord * LOG2E); fog = clamp(fog, 0.0, 1.0); vec4 textureColor = (texture2D(BaseTexture, gl_TexCoord[0].xy) * texture2D(DetailTexture, gl_TexCoord[1].xy).r) * 2.0; gl_FragColor = vec4(mix( vec3(gl_Fog.color), vec3(textureColor), fog), textureColor.a); } Do you have any links explaining fractal animated layered fog, a quick google search didn't find anything. The following page has an example that creates a moving cloud plane. I'm not sure if this is what you are looking for, but it might be useful. http://www.worldviz.com/forum/showthread.php?t=549 |
#14
|
|||
|
|||
Hi,
I will give it a try. I didn't modify the shader to remove the brightness effects because I happen to like it. But, for the openday we used blend option as I didn't have enough time to fix the texture tiling problem. I'll give this one a try. I gave the could plane a try some months ago, it looked great but doesn't suit with my mars. I was looking for more... glommy cloud to give distress feeling. I got this idea of animated layered fog from www.garagegames.com forum, as I happen to be an owner of Torque SDK. Here's the link of fractal animated cloud, which I believe also suitable for low laying animated fog. http://www.garagegames.com/index.php...=view&qid=3525 you do not need to create account to view this link, this resource is public. Thank you for help, can't wait to see what you guys will have on the actual final release ![]() Regards, Iwan |
#15
|
|||
|
|||
![]()
@ Farshizzo;
In order to reduce the intensity of texture on terrain, I decreased the brightness of the detail texture, without modifying the shader at all. Also, a "proper" seamless texture for detail, decreases the ugly looking tiles on terrain greatly. The fog definitely gives more depth to the scene. I attached the latest screenshots of your shader implementation ![]() Regards, Iwan |
![]() |
Thread Tools | |
Display Modes | Rate This Thread |
|
|