[Bf-committers] Anymated textures in the 3Dview

Roger Wickes rogerwickes at yahoo.com
Thu Feb 11 15:06:46 CET 2010


I love to use texface just to make my display attractive as I work in it all day animating and such, and use the view-properties->SolidTex. In my current gig I am modeling game assets and animating using Blender - yay! For art review and approval, I have to map the texture thru the normal mat-tex way for rendering out a video of the game action. So my current workflow is:

1. Model game asset
1b. tab into edit and unwrap, usually saving the UV layout
2. paint and save texture image, usually in Gimp, most times a few varieties
3. create material and load image texture
4. tab into edit and unwrap, and image-open in UV/image editor
5. texture face panel, select alpha copy and twoside
6. create the game action (urban wave dance action is on the slate for today :)
7. render reference video for customer approval of game action

 It would be so nice if i could eliminate steps 4 and 5, and if Blender looked at the material-texture list for an image mapped to UV and used it for real-time 3d view display. It would eliminate a lot of basically duplicate setup work (and would keep the real-time display up to date with any "real" changes in the texture panel, like if I swap out image textures). I don't know if the GLSL supports layering like we do with our texture channels, but I think someone is working on revising that whole system, iirc.

 
If that isnt possible, perhaps please provide the ability to link (in the UV/Image editor) to a named texture instead of an image file, and then pick up the image from there. That way, if I change the texture image, then the real-time display would pick it up. 
----------------
Roger




________________________________
From: Ton Roosendaal <ton at blender.org>
To: bf-blender developers <bf-committers at blender.org>
Sent: Thu, February 11, 2010 5:39:10 AM
Subject: Re: [Bf-committers] Anymated textures in the 3Dview

Hi,

The old 'texture face' in blender (90ies playstation1 design) needs  
upgrade. Image pointers there cannot have image users easily. A much  
more modern approach is to go via the glsl shaders, using regular  
Material + Texture, which already supports image users and animation.

-Ton-

------------------------------------------------------------------------
Ton Roosendaal  Blender Foundation  ton at blender.org    www.blender.org
Blender Institute   Entrepotdok 57A  1018AD Amsterdam   The Netherlands

On 11 Feb, 2010, at 10:55, Ton Roosendaal wrote:

> Hi Benoit,
>
> Thanks for the cool study, one remark though;
>
>> It calls the BKE_image_get_ibuf() function to get the image buffer.
>> It passes NULL as second argument, which means that the last loaded
>> image from the movie will be returned.
>
>
> The API description is:
>
> *BKE_image_get_ibuf(Image *ima, ImageUser *iuser)
>
> The ImageUser struct is required if you want to do anything fancier
> than just a simple image. It's needed for image sequences, movie
> files, or multilayer. The ImageUser struct sets begin/end, duration,
> fps, and so on.
>
> Now... probably this ImageUser has to be put in Object? Mesh? Will ask
> the experts :)
>
> -Ton-
>
> ------------------------------------------------------------------------
> Ton Roosendaal  Blender Foundation  ton at blender.org    
> www.blender.org
> Blender Institute   Entrepotdok 57A  1018AD Amsterdam   The  
> Netherlands
>
> On 10 Feb, 2010, at 21:12, Benoit Bolsee wrote:
>
>> Hi,
>>
>> Recently, based on my status of the VideoTexture module mantainer,
>> I've
>> been asked whether video textures could be displayed dynamically in
>> the
>> 3D view (based on frame number). Unfortunately, the BGE and Blender
>> use
>> a different realtime render engine, so the VideoTexture module is no
>> use
>> in Blender.
>>
>> Nevertheless, I've studied the question and isolated the places in  
>> the
>> code that must be changed to allow dynamic textures in the 3D view. I
>> thought I would release this information as some Blender dev might
>> want
>> to implement the changes.
>>
>> /benoit
>>
>>>>>>> Here is the study:
>>
>> I finally had the time to look into that. It is not a simple
>> problem. I
>> have identified the 2 missing links to get animated texture in the 3D
>> view but I'm not confident to implement them. The affected code is
>> part
>> of the Blender UI render engine that I'm not familiar with.
>>
>> I can give pointers to the code. Note that the following explanations
>> are applicable to Blender 2.5.
>>
>> The function that is not doing the right thing is GPU_verify_image()
>> in
>> source/blender/gpu/gpu_draw.c This function is called whenever a
>> textured face must be rendered in the 3D view. It calls the
>> BKE_image_get_ibuf() function (line 447) to get the image buffer.  
>> Note
>> that it uses a Image object, which is the central place in Blender
>> where
>> images are stored, including images from movies. It passes NULL as
>> second argument, which means that the last loaded image from the  
>> movie
>> will be returned.
>>
>> This is not a problem if the image corresponding to the current frame
>> was loaded before this function is called. Unfortunately, there is no
>> proper mechanism in Blender to ensure that. I found that displaying
>> the
>> Texture in the Button panel partially works: the frame number is
>> updated
>> whenever you modify something on that panel. This could be fixed by
>> proper notifier/event but has the inconvenient that you have to keep
>> the
>> texture panel opened. A better way would be scan all Images (there
>> is a
>> global link of such objects) and update those pointing to movies
>> whenever the frame number is changed. I don't think that is
>> particularly
>> difficult to do.
>>
>> The second problem is at line 446: if the image was already bound  
>> to a
>> GPU texture, it simply rebinds and the image is not reloaded.  The
>> proper load code is below at line 553. The idea would be to keep at
>> Image level the number of the frame that was last loaded on the GPU
>> and
>> if it differs from the frame returned by BKE_image_get_ibuf, reload
>> the
>> image. Again I don't think this is complicated to do.
>>
>> <<<<<<
>>
>> _______________________________________________
>> Bf-committers mailing list
>> Bf-committers at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-committers
>
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers

_______________________________________________
Bf-committers mailing list
Bf-committers at blender.org
http://lists.blender.org/mailman/listinfo/bf-committers



      


More information about the Bf-committers mailing list