13 years ago(no commit message)
Jens Ole Wund [Sat, 13 Dec 2008 23:11:12 +0000 (23:11 +0000)]

13 years agoadding hint
Jens Ole Wund [Sat, 13 Dec 2008 23:04:36 +0000 (23:04 +0000)]
adding hint
Building on NSIS_Installer fails when path to NSIS tools is not set

13 years agoprojection paint cleanup (nothing to see here)
Campbell Barton [Sat, 13 Dec 2008 16:11:52 +0000 (16:11 +0000)]
projection paint cleanup (nothing to see here)
* BarycentricWeightsPersp2f was calling BarycentricWeights2f, and re-weighting. Changed so the re-weighting isnt needed.
* replaced tri_depth_2d with VecZDepthOrtho and VecZDepthPersp
* project_paint_occlude_ptv_clip now calls project_paint_occlude_ptv to remove duplicate code.

13 years agoProjection Painting, merge from branch
Campbell Barton [Fri, 12 Dec 2008 18:59:17 +0000 (18:59 +0000)]
Projection Painting, merge from branch

 - Painting onto multiple images at once.
 - Clone with an offset similar to the gimp, also an option to clone between UV layers, (not both offset and between layers atm)
 - Stencil layer, similar to The Gimp's quickmask.
 - Face mask mode - (painting onto only selected faces).
 - Texture brushes (so image and texture-node brushes too)
 - Seam bleed so you don't see gaps when painting over UV seams (new option set in the panit panel)
 - Occlusion (only point onto the first face under the paintbrush, can also be used for masking out parts of the model to paint onto) - (new option set in the paint panel)
 - Muti-threaded, each thread operates on its own bucket.
 - Support partial updates to speedup OpenGL texture refreshing.
 - Support tile based multiple undo's
 - Support float image buffers.
 - Backface culling (new option set in the paint panel)
 - All color blending modes - Add/Multiply.. etc.
 - Airbrush rate. (used to be broken)
 - Improve the way paint is mixed when painting, so painting with 0.2 alpha will not accumulate above 0.2 alpha on the image as you paint.
 - Option to use normals to fade out strokes on the edge of a surface to avoid ugly edges. (same as Vertex Paints "Normal" option)

Known Problems
 - Not directly related to painting but changes in selection flags are not updated on the final derived mesh.
 - Smear tool has some distortion when in perspective mode.
 - While in perspective view any faces with 1 vert behind the viewpoint, will be completely ignored.
 - Painting can be initially slow while buckets are being initialized, a number of solutions exist.
 - Size 1 brushes don't work yet.
 - When painting onto large faces its still possible to get artifacts.
 - Spatial optimizations are needed to skip occluded faces and test pixel occlusion. (will look into using blenders BVH )

13 years agominor changes projection-paint
Campbell Barton [Fri, 12 Dec 2008 18:31:34 +0000 (18:31 +0000)]
minor changes

13 years agoview.c
Campbell Barton [Fri, 12 Dec 2008 17:56:19 +0000 (17:56 +0000)]
 * Renamed view_autodist to view_mouse_depth
 * Accept args for mouse location and pixel distance around the hotspot used to lookup the depth.
 * removed persp(PERSP_VIEW) within this function, since it didnt set the view back.

 * normal falloff now works as Brecht suggests. Normal limit of 80 will blend between 80 and 85deg,  70deg limit blends between 70-80deg.
 * convert normal falloff to radians on initializing rather then on every comparison.
 * Ctrl+Click setting the cursor in its own function.
 * projection painting wasnt accounting for an exception for too high pressure values on first touch in windows for some tablets.
 * removed grease pencil benchmark function

13 years agoVRML/X3D
Campbell Barton [Fri, 12 Dec 2008 05:46:07 +0000 (05:46 +0000)]
* Improved compatibility with VRML files
* Extract strings so they dont get modified for parsing, filename URL's with {} [] dont break importing anymore.
* Cameras were rotated incorrectly
* inline files were not opened with GZip
* Animation Support - currently only loc/scale/rot (scale untested)
* Lists of image URLs now use the first image from the list since there is no support for dynamic switching.
* use imagemagick to convert GIF's so they load in linux. (WIP - could be extended, At least it should not break anything)

BPyMathutils angle2ToLength function could be simplified (pointed out by brecht)

13 years agoVideoTexture.ImageMirror: if the mirror is horizontal in mesh coord, take the Y axis...
Benoit Bolsee [Thu, 11 Dec 2008 23:02:33 +0000 (23:02 +0000)]
VideoTexture.ImageMirror: if the mirror is horizontal in mesh coord, take the Y axis as the up direction for the UV map. If the mirror is not perfectly vertical(horizontal), the projection of the Z(Y) axis on the mirror plane is the mirror Up direction.

13 years agofix for [18069] open nurbs curve snaps end to centerpoint
Campbell Barton [Wed, 10 Dec 2008 11:42:26 +0000 (11:42 +0000)]
fix for [18069] open nurbs curve snaps end to centerpoint
made nurbs surface curves use the same number of points as nurbs curves.

13 years agomerge from trunk - r17500 to HEAD
Campbell Barton [Wed, 10 Dec 2008 09:45:48 +0000 (09:45 +0000)]
merge from trunk - r17500 to HEAD

13 years agomove the paint buttons from the image view and buttons window into one function.
Campbell Barton [Wed, 10 Dec 2008 05:41:21 +0000 (05:41 +0000)]
move the paint buttons from the image view and buttons window into one function.

13 years agotweaks to brush falloff and alpha, giving nicer looking strokes.
Campbell Barton [Wed, 10 Dec 2008 03:13:48 +0000 (03:13 +0000)]
tweaks to brush falloff and alpha, giving nicer looking strokes.

13 years agobugfix - [#18063] Projection paint branch: draw tool "drops out" when model extends...
Campbell Barton [Tue, 9 Dec 2008 14:30:05 +0000 (14:30 +0000)]
bugfix - [#18063] Projection paint branch: draw tool "drops out" when model extends beyond view borders
reported by michael williamson.

Was caused by point inside triangle test using an error limit that didnt adjust for different size triangles.

13 years agoImageMirror: add clip attribute to limit clipping distance of mirror rendering
Benoit Bolsee [Tue, 9 Dec 2008 14:16:10 +0000 (14:16 +0000)]
ImageMirror: add clip attribute to limit clipping distance of mirror rendering

13 years ago* tablet pressure changing opacity while painting didnt work
Campbell Barton [Tue, 9 Dec 2008 08:21:53 +0000 (08:21 +0000)]
* tablet pressure changing opacity while painting didnt work
* pixels with <= the current opacity are not painted onto, speeds up painting especially with low spacing. (only when airbrush is disabled)
* use qsort rather then own crufty sorting function
* grouped projection painting functions together.

13 years agoFix mistake in last commit.. it's pic + 1 ;)
Diego Borghetti [Tue, 9 Dec 2008 04:57:42 +0000 (04:57 +0000)]
Fix mistake in last commit.. it's pic + 1 ;)

13 years agopatch from Mitchell Stokes
Campbell Barton [Tue, 9 Dec 2008 04:13:23 +0000 (04:13 +0000)]
patch from Mitchell Stokes
#18045] [patch] A patch that exposes the rest of the motion functions of KX_GameObject to Python.

*applyForce => setForce
*applyTorque => setTorque
*applyRotation => setDRot
*applyMovement => setDLoc

13 years agoCommit patch [#18057] by Dalai Felinto (dfelinto)
Diego Borghetti [Tue, 9 Dec 2008 04:02:18 +0000 (04:02 +0000)]
Commit patch [#18057] by Dalai Felinto (dfelinto)

This implement the option of playback an animation using the
step value in the render panel (or -a -j).

Tested here and work fine, about the ffmpeg/avi bug it's my
fault, I don't think in "step + video format", so now it's
in my todo-list :)

13 years ago== Python Space Handlers ==
Willian Padovani Germano [Tue, 9 Dec 2008 00:18:30 +0000 (00:18 +0000)]
== Python Space Handlers ==

- Old feature request: now space handlers can report release events, too. For that a new space handler type was added, here's the header for it:


These scripts report both "presses and releases". For release events, Blender.eventValue is zero and == Blender.SpaceHandlers.VIEW3D_EVENT_RELEASE. Check the API_related bpy doc for more info.

- Bug fix: left mouse clicks could be reported twice.

Important: for both the feature and the fix, to make the code nicer and to let space handlers become available in more situations, I moved the check for space handlers in space.c. Now it happens before checks for grease pencil, sculpt and left/right mouse button swapping. If this causes any problem (it shouldn't), please report.

PS: Thanks to Steven Truppe, who asked for this and even sent me a patch, but to preserve compatibility with existing event space handler scripts I did things in a different way.

13 years ago* layer mask (similar to the gimp), uses a UV layer's image as mask for painting.
Campbell Barton [Sun, 7 Dec 2008 19:24:41 +0000 (19:24 +0000)]
* layer mask (similar to the gimp), uses a UV layer's image as mask for painting.
* cloning between layers was broken
* Added buttons for selecting the souce clone/mask layer in the UV layer list.

13 years agosplit code for applying each paint tool into its own function.
Campbell Barton [Sun, 7 Dec 2008 08:54:42 +0000 (08:54 +0000)]
split code for applying each paint tool into its own function.

13 years ago* added an option not to use projection painting (use existing 3D paint)
Campbell Barton [Sat, 6 Dec 2008 19:19:54 +0000 (19:19 +0000)]
* added an option not to use projection painting (use existing 3D paint)
* further tweak limits to get rid of some face clipping problems.

13 years ago* fixed crash when a mesh with no UVs was painted.
Campbell Barton [Sat, 6 Dec 2008 17:53:08 +0000 (17:53 +0000)]
* fixed crash when a mesh with no UVs was painted.
* fixed more bugs in face clipping, clip_line wasnt working when the line was horiz/vertical. unning exactly on the clipping rectangle bounds.
* testing if a point was inside a triangle didnt work if the point was touching the triangles edge, added IsectPT2Df_limit(...) for this rather then using 3 point/line intersection checks.
...Cant find anymore bugs in face clipping now :)

13 years ago* Patch from Michael Fox to set the normal angle (was fixed at 80 before)
Campbell Barton [Sat, 6 Dec 2008 13:42:55 +0000 (13:42 +0000)]
* Patch from Michael Fox to set the normal angle (was fixed at 80 before)
* Fixed another face clipping bug (some artifacts still when using screen aligned faces)
* Removed Soften and Warp buttons on the panit panel since they are not used for projection painting
* added do_versions to initialize bleed and normal values

13 years agoWIP fixes, still need to tidy up more.
Campbell Barton [Sat, 6 Dec 2008 01:21:42 +0000 (01:21 +0000)]
WIP fixes, still need to tidy up more.
* fix from last commit, threaded memarena wasnt used currectly in one case. (crashing blender)
* add a remove doubles and point on line test to face poly clipping function (fixes some cases where buckets are aligned with faces)

13 years agoBGE bug #17731 fixed: No sleeping Button disables dynamics of an object if it's paren...
Benoit Bolsee [Fri, 5 Dec 2008 23:13:23 +0000 (23:13 +0000)]
BGE bug #17731 fixed: No sleeping Button disables dynamics of an object if it's parented+unparented

13 years agoUse MEM_*alloc for some of the main arrays rather then MemArena (was waisting too...
Campbell Barton [Fri, 5 Dec 2008 13:00:14 +0000 (13:00 +0000)]
Use MEM_*alloc for some of the main arrays rather then MemArena (was waisting too much memory)

13 years agoVideoTexture: new ImageMirror class for easy mirror (and portal) creation
Benoit Bolsee [Thu, 4 Dec 2008 16:07:46 +0000 (16:07 +0000)]
VideoTexture: new ImageMirror class for easy mirror (and portal) creation

The new class VideoTexture.ImageMirror() is available to perform
automatic mirror rendering.


    scene:    reference to the scene that will be rendered.
              Both observer and mirror must be part of that scene.
    observer: reference to a game object used as view point for
              mirror rendering: the scene will be rendered through
              the mirror as if the active camera was at the observer
              location. Usually the observer is the active camera
              but you can use any game obejct.
    mirror:   reference to the mesh object holding the mirror.
    material: material ID of the mirror texture as returned by
              VideoTexture.materialID(). The mirror is formed by
              the polygons mapped to that material.

There are no specific methods or attributes. ImageMirror inherits
all methods and attributes from ImageRender. You must refresh the
parent VideoTexture.Texture object regularly to update the mirror

Guidelines on how to create a working mirror:
- Use a texture that is specific to the mirror so that the mirror
  rendering only appears on the mirror.
- The mirror must be planar; the algorithm works well only for planar
  or quasi planar mirror. For spherical mirror, you will get better
  results with ImageRender and a camera at the center of the mirror.
  ImageMirror automatically computes the mirror orientation and
  position. The mirror doesn't need to be rectangular, it can be
  circular or take any form provided it is planar.
- The mirror up direction must be along the Z axis in local mesh
  coordinates. If the mirror is not vertical, ImageMirror will
  compute the up direction as being the projection of the Z axis
  on the mirror plane.
- UV mapping must be set right to get correct mirror rendering:
  - make a planar projection of the mirror polygons (Unwrap or projection from view)
  - eventually rotate the projection so that UV up direction corresponds to the mesh Z axis
  - scale the projection so that the extreme points touch the border of the texture
  - flip the UV projection horizontally (scale -1 on X axis). This is needed
    because the mirror texture is rendered from the back of the mirror and
    thus is reversed from the view point of the observer. Horizontal flip
    in the UV map restores the correct orientation.

Besides these simple rules, the mirror rendering is completely automatic.
In particular, you don't need to allocate a camera for the rendering,
ImageMirror creates dynamically a camera for that. The reflection is correct
even on large angles. The mirror can be a dynamic and moving object, the
algorithm always computes the correct camera position based on observer
relative position. You don't have to worry about mirror position in the scene:
the algorithm automatically computes the camera frustum so that any object
behind the mirror is not rendered.

- observer and mirror are references to game objects. ImageMirror keeps
  a pointer to them but does not increment the reference count. You must ensure
  that these game objects are not deleted as long as you refresh() the ImageMirror
  object. You must release the ImageMirror object before you delete the game
  objects. To release the ImageMirror object (normally stored in GameLogic),
  just assign it to None.
- Mirror rendering is automatically skipped when the observer is behind the mirror
  but it is not disabled when the mirror is out of sight of the observer.
  You should only refresh the mirror when you know that the observer is likely to see it.
  For example, no need to refresh a car inner mirror when the player is not in the car.


  contr = GameLogic.getCurrentController()
  # object holding the mirror
  mirror = contr.getOwner()
  scene = GameLogic.getCurrentScene()
  # observer will be the active camere
  camera = scene.getObjectList()['OBCamera']
  matID = VideoTexture.materialID(mirror, 'IMmirror.png')
  GameLogic.mirror = VideoTexture.Texture(mirror, matID)
  GameLogic.mirror.source = VideoTexture.ImageMirror(scene,camera,mirror,matID)
  # to render the mirror, just call GameLogic.mirror.refresh(True) on each frame.

You can download a demo game (with a video file) here:

For those who have already downloaded the demo, you can just update the blend file:

13 years ago* added uvco_to_wrapped_pxco to get the pixel x/y from a UV that could be outside...
Campbell Barton [Wed, 3 Dec 2008 17:36:50 +0000 (17:36 +0000)]
* added uvco_to_wrapped_pxco to get the pixel x/y from a UV that could be outside 0-1 range.
* use 80deg rather then 90 for the "Normal" painting option, since painting faces that are very close to 90d to the view gives some artifacts.
* Brecht modified the Barycentric weights function to use a signed area. so BarycentricWeightsSimplePersp2f and BarycentricWeightsSimple2f these funcs are not needed anymore.

2 bugs with seams fixed
* triangle faces seams were not being filled correctly - causing visible seams
* the pretend 3D location for seam pixels was too close to the face edge - causing some pixels to be occluded by the adjacent face.

13 years ago* remove warnings
Campbell Barton [Wed, 3 Dec 2008 16:17:59 +0000 (16:17 +0000)]
* remove warnings
* style fits with blenders more
* use rctf and rcti and rctf types rather then float[4]
* some loops were confusing, use for loops rather then while or do/while

13 years agomissed saving a small change
Campbell Barton [Wed, 3 Dec 2008 07:51:12 +0000 (07:51 +0000)]
missed saving a small change

13 years agofix for [#18040] FBX writes incorrect relative paths.
Campbell Barton [Wed, 3 Dec 2008 07:45:52 +0000 (07:45 +0000)]
fix for [#18040] FBX writes incorrect relative paths.

13 years agoAdded Blender.sys.relpath(path, start='//')
Campbell Barton [Wed, 3 Dec 2008 06:09:07 +0000 (06:09 +0000)]
Added Blender.sys.relpath(path, start='//')
similar to os.path.relpath but uses blendfile path rather then the current working directory.

Also use python exceptions rather then providing our own ones.

13 years agoadded a function to resolve case insensitive paths in BPySys and an option to use...
Campbell Barton [Wed, 3 Dec 2008 02:03:51 +0000 (02:03 +0000)]
added a function to resolve case insensitive paths in BPySys and an option to use it in BPyImage
- Useful when loading files with saved in windows on a *nix system.

13 years agoChanged vector math to use library functions.
Robin Allen [Sat, 29 Nov 2008 16:52:06 +0000 (16:52 +0000)]
Changed vector math to use library functions.

13 years agominor changes, (some comments and less warnings)
Campbell Barton [Wed, 26 Nov 2008 23:57:44 +0000 (23:57 +0000)]
minor changes, (some comments and less warnings)

13 years agoVideoTexture: new ImageRender class for Render To Texture
Benoit Bolsee [Wed, 26 Nov 2008 17:47:42 +0000 (17:47 +0000)]
VideoTexture: new ImageRender class for Render To Texture

The new class VideoTexture.ImageRender() is available to perform
render to texture in the GE.


    cam  : camera object that will be used for the render.
           It must be an inactive camera.
    scene: reference to the scene that will be rendered.
           The camera must be part of that scene.
  Returns an object that can be used as a source of a VideoTexture.Texture object

Methods: none


     4-tuple representing the background color of the rendering
     as RGBA color components, each component being an integer
     between 0 and 255.
     Default value = [0,0,255,255] (=saturated blue)
     Note: athough the alpha component can be specified, it is not
           supported at the moment, the alpha channel of the rendered
           texture will always be 255. You can however introduce an
           alpha channel by appending a FilterBlueScreen() filter, it
           will set the alpha to 0 (transparent) on all pixels that were
           not rendered.

     2-tuple representing the size of the render area as [x,y] number of pixels.
     Default value = largest rectangle with power of 2 dimensions that fits in the canvas
     You may want to reduce the render area to increase performance. For example,
     a render area of [256,128] is probably sufficient to implement a car inner mirror.
     For best performance, use power of 2 dimensions and don't set any filter: this
     allows direct transfer between the GPU frame buffer and texture memory
     without going through the host.

     Boolean indicating if the render alpha channel should be copied to the texture.
     Default value: False
     Experimental, do not use.

     Boolean indicating if the entire canvas should be used for the rendering.
     Default value: False
     Note: There is no reason to set this attribute to True: the rendering will
           in any case be scaled down to the largest rectangle with power of 2
           dimensions before transfering to the texture.

Attributes inherited from the ImageBase class:

  image : image binary data, read-only
  size  : [x,y] size of the texture, read-only
  scale : set to True for fast scale down in case the render area dimensions are not power of 2
  flip  : set to True for vertical flip.
  filter: set a post-processing filter on the render.


* Aspect Ratio
For consistent results in Blender and Blenderplayer, the same aspect ratio used
by Blender to draw the camera viewport (Scene(F10)->Format tab->Size X/Size Y)
is also used during the rendering. You can control the portion of the scene that
will be rendered by "looking through the camera": the zone inside the outer dotted
rectangle will be rendered to the texture.
In order to reproduce the scene without X/Y distortion, you must apply the texture
on an object or portion of object that has the same aspect ratio.

* Order of rendering
The rendereing is performed when you call the refresh() method of the parent
Texture object. This happens outside the normal frame rendering and will have no
effect on it.
However, if you want to use ImageViewport and ImageRender at the same time, be
sure to refresh the viewport texture before the render texture because the latter
will destroy the frame buffer that is used by the former to update the texture.

* Scene status
The meshes are not updated during the render to texture: the rendered texture
is one frame late to the rendered frame with regards to mesh deformation.

* Example:

  cont = GameLogic.getCurrentController()
  # object that receives the texture
  obj = contr.getOwner()
  scene = GameLogic.getCurrentScene()
  # camera used for the render
  tvcam = scene.getObjectList()['OBtvcam']
  # assume obj has some faces UV assigned to tv.png
  matID = VideoTexture.materialID(obj, 'IMtv.png') = VideoTexture.Texture(obj, matID) = VideoTexture.ImageRender(scene,tvcam) = [256,256]
  # to render the texture, just call on each frame.

You can download a demo game (with a video file) here:

For those who have already downloaded the demo, you can just update the blend file:

13 years agoBGE update: helper functions for VideoTexture render to texture feature.
Benoit Bolsee [Wed, 26 Nov 2008 17:38:54 +0000 (17:38 +0000)]
BGE update: helper functions for VideoTexture render to texture feature.

13 years agoBGE bug fix: culling algorithm didn't used the correct camera.
Benoit Bolsee [Wed, 26 Nov 2008 17:35:53 +0000 (17:35 +0000)]
BGE bug fix: culling algorithm didn't used the correct camera.

13 years agoMSVC9 project file update for TEX nodes
Benoit Bolsee [Wed, 26 Nov 2008 17:34:10 +0000 (17:34 +0000)]
MSVC9 project file update for TEX nodes

13 years agoMSVC9 project file update for blenderplayer
Benoit Bolsee [Wed, 26 Nov 2008 17:23:22 +0000 (17:23 +0000)]
MSVC9 project file update for blenderplayer

13 years ago2 things:
Robin Allen [Wed, 26 Nov 2008 13:07:24 +0000 (13:07 +0000)]
2 things:

* Patch #17998
* tex_input_vec now takes 3-vector as first argument (was 4-vector).

13 years ago* Added a new Timeline menu entry: Playback -> Sync Playback to Frames/Sec. It's
Matt Ebb [Wed, 26 Nov 2008 00:47:38 +0000 (00:47 +0000)]
* Added a new Timeline menu entry: Playback -> Sync Playback to Frames/Sec. It's
more convenient and sensible to find this feature, than over in the audio settings
(dropping frames in playback is not just for audio!)

13 years ago* Added 'Particle System' entries as children of particle system modifiers in the
Matt Ebb [Tue, 25 Nov 2008 23:14:00 +0000 (23:14 +0000)]
* Added 'Particle System' entries as children of particle system modifiers in the
outliner. Clicking on one activates it and takes you to the object buttons - it's a
lot better to see what's going on than a little < 1 Part 5 > that gives very little

13 years ago * fix path to openexr on irix
Stefan Gartner [Tue, 25 Nov 2008 12:53:13 +0000 (12:53 +0000)]
 * fix path to openexr on irix
 * added missing define in storage.c

13 years ago* make sure Bullet is enabled when WITH_BF_BULLET=True
Nathan Letwory [Tue, 25 Nov 2008 08:00:58 +0000 (08:00 +0000)]
* make sure Bullet is enabled when WITH_BF_BULLET=True

13 years agouse const where possible and removed some unneeded args (4.3% speedup)
Campbell Barton [Tue, 25 Nov 2008 03:39:30 +0000 (03:39 +0000)]
use const where possible and removed some unneeded args (4.3% speedup)

13 years agominor changes
Campbell Barton [Mon, 24 Nov 2008 22:06:09 +0000 (22:06 +0000)]
minor changes
* less calls to BKE_image_get_ibuf when switching between images
* remove thread debug prints
* use own pixel blending funcs (IMB_blend_color isnt needed in some cases), slightly faster without this.

13 years agopatch #8583: Add support for gcc on irix
Stefan Gartner [Mon, 24 Nov 2008 14:15:05 +0000 (14:15 +0000)]
patch #8583: Add support for gcc on irix

to compile blender with gcc on IRIX, IRIX_USE_GCC needs to be set to true in

Other changes related to irix:
 * compile solid from extern/
 * don't build plugins (yet) with "make release" when using gcc (the shell
   script used assumes MIPSpro is installed)
 * use statvfs instead of statfs on irix, like done on solaris
 * use external libs from $(LCGDIR) instead of /usr/freeware
 * use glew header files from $(LCGDIR)/glew instead of the ones installed on
   the system (this applies to other platforms as well)
 * ffmpeg support currently is disabled on irix

13 years agobackface culling wasnt working as it should in perspective view with the "Normal...
Campbell Barton [Mon, 24 Nov 2008 07:08:51 +0000 (07:08 +0000)]
backface culling wasnt working as it should in perspective view with the "Normal" option enabled.

13 years agopainting onto faces was broken when the UV's or faces were flipped, reversing the...
Campbell Barton [Mon, 24 Nov 2008 05:58:00 +0000 (05:58 +0000)]
painting onto faces was broken when the UV's or faces were flipped, reversing the order that LSCM and many other tools give.

13 years ago* changed "Normal" falloff to only fade out at more extreme normals
Campbell Barton [Mon, 24 Nov 2008 03:06:27 +0000 (03:06 +0000)]
* changed "Normal" falloff to only fade out at more extreme normals
* tooltip was wrong

13 years ago* brush and airbrush match The Gimp, where the total color applied to a pixel during...
Campbell Barton [Mon, 24 Nov 2008 02:13:24 +0000 (02:13 +0000)]
* brush and airbrush match The Gimp, where the total color applied to a pixel during a stroke is limited by the brush opacity. With the airbrush option enabled it will accumulation over the opacity level (as it did before, irrespective of the settings).
* float buffer support for all painting operation and undo.
* only run brush_sample_tex() for textures brushes.
* redraw the brush outline even when nothing is painted.

13 years agoOnly paint in the view clipped area when view clip is enabled (space defined by Alt+B).
Campbell Barton [Sun, 23 Nov 2008 17:06:35 +0000 (17:06 +0000)]
Only paint in the view clipped area when view clip is enabled (space defined by Alt+B).

13 years ago[#18021] Rotating gets locked to axis after trackball rotate mode is entered
Martin Poirier [Sun, 23 Nov 2008 15:27:53 +0000 (15:27 +0000)]
[#18021] Rotating gets locked to axis after trackball rotate mode is entered

Reset transform restriction flags when switching to other transformations while running.

Also don't draw constraint if no constraint flag is on (old annoyance).

13 years agomaximum polyline between clipped rectangle and triangle was 6, but in some cases...
Campbell Barton [Sat, 22 Nov 2008 15:09:16 +0000 (15:09 +0000)]
maximum polyline between clipped rectangle and triangle was 6, but in some cases 7 points were set. set the maximum size of the polyline at 8 to be safe.

13 years agofix for painting onto faces from a side view in perspective mode, they would have...
Campbell Barton [Sat, 22 Nov 2008 14:54:49 +0000 (14:54 +0000)]
fix for painting onto faces from a side view in perspective mode, they would have jaggie clipping applied that looked bad.

The reason for this was with transforming screenspace points outside the face into UV space and when the bucket bounds was enough outside the face.
For faces viewed side on, this transformation would be applied incorrectly (a bit like trying to apply a projection matrix to a point behind the view), the buckets UV space coords would be incorrect and the wrong pixels would be initialized for that face.

solution is to clip the screenspace face with the bucket before getting the UVs. This should also be a bit faster since the clipped polyline will have a smaller bounding box.

13 years agoThis is patch [#17896] Irix Build Files
Kent Mein [Fri, 21 Nov 2008 17:22:17 +0000 (17:22 +0000)]
This is patch [#17896] Irix Build Files
Submitted By:
Timothy Baldridge (tbaldridge)

Add's scons support for irix.


13 years ago* smudge tool wanst working (forgot to set the precious mouse location)
Campbell Barton [Fri, 21 Nov 2008 06:17:26 +0000 (06:17 +0000)]
* smudge tool wanst working (forgot to set the precious mouse location)
* VecWeightf and Vec2Weightf didnt have return types defined.

13 years ago* added option "Normal", same as the vpaint option, gives more natural looking brush...
Campbell Barton [Fri, 21 Nov 2008 03:09:48 +0000 (03:09 +0000)]
* added option "Normal", same as the vpaint option, gives more natural looking brush strokes.
* faces that were ignored were also not taken into acount when checking UV seams - causng bleed not to work properly in some cases.
* commented early pixel filling loop exit that fails in some cases.

13 years agoCrasher fix.
Martin Poirier [Thu, 20 Nov 2008 21:45:22 +0000 (21:45 +0000)]
Crasher fix.

If vertex groups had % in them, the function making the menu string would crash (in release only).

13 years agocommit yesterday broke scaling in the sequencer (dumb mistake)
Campbell Barton [Thu, 20 Nov 2008 00:34:24 +0000 (00:34 +0000)]
commit yesterday broke scaling in the sequencer (dumb mistake)
also changed 3 if's into a switch statement for selecting the interpolation.

13 years ago* use utility function brush_painter_paint that runs the project_paint_op in a callba...
Campbell Barton [Wed, 19 Nov 2008 07:57:25 +0000 (07:57 +0000)]
* use utility function brush_painter_paint that runs the project_paint_op in a callback, (hopefully making tablets work properly)
* removed own interpolation function, use bilinear_interpolation_color instead.

13 years agosvn merge -r17471:HEAD
Campbell Barton [Wed, 19 Nov 2008 03:43:03 +0000 (03:43 +0000)]
svn merge -r17471:HEAD

13 years agoSplit up the following imbuf functions in 2...
Campbell Barton [Wed, 19 Nov 2008 03:28:07 +0000 (03:28 +0000)]
Split up the following imbuf functions in 2...
void bicubic_interpolation(struct ImBuf *in, struct ImBuf *out, float u, float v, int xout, int yout);
void neareast_interpolation(struct ImBuf *in, struct ImBuf *out, float u, float v, int xout, int yout);
void bilinear_interpolation(struct ImBuf *in, struct ImBuf *out, float u, float v, int xout, int yout);

void bicubic_interpolation_color(struct ImBuf *in, unsigned char *col, float *col_float, float u, float v);
void neareast_interpolation_color(struct ImBuf *in, unsigned char *col, float *col_float, float u, float v);
void bilinear_interpolation_color(struct ImBuf *in, unsigned char *col, float *col_float, float u, float v);

This is needed so for projection painting but generally useful if you want to get the interpolated color of a pixel in an image without having a destination imbuf.

While editing these I noticed the functons are a bit dodgy, they assume the input ImBuf has matching float/chr buffer to the output.

13 years agobicubic_interpolation - dont use pow(val, 3.0f) at all, do (val*val*val) instead,
Campbell Barton [Wed, 19 Nov 2008 02:07:23 +0000 (02:07 +0000)]
bicubic_interpolation - dont use pow(val, 3.0f) at all, do (val*val*val) instead,
Tested overall speedup is about 5x when scaling 4096x4096 -> 4000x4000 in the sequencer.

There were some artifacts in the resulting image but double checked and the old code gives the same problems.
Added back old code with #if 0's since its a bit more readable.

13 years agoSome improvements brecht suggested, only noticable change is faster multithreading
Campbell Barton [Tue, 18 Nov 2008 13:51:51 +0000 (13:51 +0000)]
Some improvements brecht suggested, only noticable change is faster multithreading

General optimizations
* Precompute 1/x when dividing by x multiple times.
* Use float constants like 0.0f instead of 0.0, avoids conversions from float to doubles and back.

* make pixel (and similar pointers elsewhere) a union with a float and unsigned int pointer to reduce the number of casts a little. generally there are a lot of casts going on in the code, makes it hard to read.

* the perspective case checks with (*projScreenCo)[3] > 0.001) for faces behind the view. - Changed to use the clip start from get_view3d_viewplane
* removed arbitrary check for brush size to disable threads.

* Make clone tool use IMB_blend_color to reduce the code and support blend modes.

* Make threaded and non threaded mode use same function (just dont start threads when its set to 1)
* removed PIL_sleep_ms, was not needed and slowed down threading (my bad!, was copied from bake code).

13 years agosome scons command line args were not working since recent changes-
Campbell Barton [Tue, 18 Nov 2008 05:47:19 +0000 (05:47 +0000)]
some scons command line args were not working since recent changes-
 scons CCFLAGS="-O0 -ggdp3"
for example would pass on the args including the "'s to scons, causing the build to fail.

13 years agoAdded option to use another UV layer as a clone source, to paint from one uv layer...
Campbell Barton [Tue, 18 Nov 2008 03:28:50 +0000 (03:28 +0000)]
Added option to use another UV layer as a clone source, to paint from one uv layer's image and UVs into the active layer.

13 years ago* Added buttons for accessing options "occlude", "backface cull" and "bleed", note...
Campbell Barton [Tue, 18 Nov 2008 00:17:13 +0000 (00:17 +0000)]
* Added buttons for accessing options "occlude", "backface cull" and "bleed", note that bleed is 0.0 by default, before it was always 2.0;
* use a faster method of getting a pixels screenspace location.
* check if its possible to break out of pixel to bucket/face intersection early - ~7% overall speedup (ignoring redraw time).
* removed scanline intersection function (added back incase they were needed but it looks like there not)
* speedup for painting with only 1 image (use a loop without context switching checks)
* more commenting + cleanup

13 years agoQuatOne was so wrong is would make Hamilton cry.
Martin Poirier [Mon, 17 Nov 2008 22:13:45 +0000 (22:13 +0000)]
QuatOne was so wrong is would make Hamilton cry.

Thankfully, very little code used it, the only exception being the retarget code in etch-a-ton.

13 years agoAdded BF_PROFILE_LINKFLAGS, Compiling with BF_PROFILE=1 was also throwing a python...
Campbell Barton [Mon, 17 Nov 2008 10:43:12 +0000 (10:43 +0000)]
Added BF_PROFILE_LINKFLAGS, Compiling with BF_PROFILE=1 was also throwing a python error.

13 years agoFix compilation on OS X
Martin Poirier [Mon, 17 Nov 2008 00:54:45 +0000 (00:54 +0000)]
Fix compilation on OS X

Patch by dfelinto

13 years agoDXF-Importer: updated version v1.12 - 2008.11.16 by migius
Remigiusz Fiedler [Sun, 16 Nov 2008 23:52:29 +0000 (23:52 +0000)]
DXF-Importer: updated version v1.12 - 2008.11.16 by migius
 - remove try_finally: cause not supported in python <2.5
 - add Bezier curves bevel radius support (default 1.0)

13 years agodisabled painting to offscreen buckets, was causing priblems when zooming in on large...
Campbell Barton [Sun, 16 Nov 2008 18:25:15 +0000 (18:25 +0000)]
disabled painting to offscreen buckets, was causing priblems when zooming in on large models. also simplified backface test.

13 years ago* fix "dot drawing" problem - draw lines inbetween updates when redrawing the view...
Campbell Barton [Sun, 16 Nov 2008 15:26:15 +0000 (15:26 +0000)]
* fix "dot drawing" problem - draw lines inbetween updates when redrawing the view like how existing painting works. (this means slow systems wont have the problems when they would only see dots as they dragged their mouse around)
* bucket resolution is now set from the brush size so there is around 9 buckets under the brush - (previously was fixed to 128x128).
* brush sizes below 40 disable multithreading, since threads only speeds up cases where each bucket has enough pixels in it for each core to spend some time.
* make smear use bicubic pixel lookups so a low Spacing value works as expected.
* smear tool was darkening pixels a tiny bit.
* fix for simple mistake causing ProjectPaintImage arrays not to be thread safe.

13 years agosvn merge -r17443:HEAD
Campbell Barton [Sat, 15 Nov 2008 16:55:37 +0000 (16:55 +0000)]
svn merge -r17443:HEAD

13 years ago* clone tool didnt work when the object was not at the center point.
Campbell Barton [Sat, 15 Nov 2008 16:20:37 +0000 (16:20 +0000)]
* clone tool didnt work when the object was not at the center point.
* added clone button to the paint editbuttons (was only in the image window before)
* ctrl+clicking to set the 3d cursor also sets its depth to the face its over (much more useful when cloning and rotating the view)
* support for painting and cloning for tiled textures (for UV's outside 0-1)
* more consistant veriable names, merged image arrays into a ProjectPaintImage type to be less confusing.

13 years ago17973Patch by dfelinto, and also fixed a bug in 2d-filters
Hamed Zaghaghi [Sat, 15 Nov 2008 12:10:16 +0000 (12:10 +0000)]
17973Patch by dfelinto, and also fixed a bug in 2d-filters

13 years agomade undo on multiple images works
Campbell Barton [Sat, 15 Nov 2008 02:58:47 +0000 (02:58 +0000)]
made undo on multiple images works

13 years agotile based undo's now works while projection painting.
Campbell Barton [Fri, 14 Nov 2008 17:30:55 +0000 (17:30 +0000)]
tile based undo's now works while projection painting.
TODO - float buffer support & for some reason painting on multiple images at once dosnt restore the tiles to the right image then undoing.

13 years agocopy over pthread dll to the install dir with cross compiling,
Campbell Barton [Fri, 14 Nov 2008 03:21:06 +0000 (03:21 +0000)]
copy over pthread dll to the install dir with cross compiling,
eventually should copy more libs but for now this makes blenderlite work
- (used for automatic blender builds on graphicall)

13 years agoTransform Roll Fixes for editbone. Special case for rotation, we don't need to guess...
Martin Poirier [Fri, 14 Nov 2008 03:13:40 +0000 (03:13 +0000)]
Transform Roll Fixes for editbone. Special case for rotation, we don't need to guess in those case and the result is better if we use the real rotation.

13 years agoBugfix:
Joshua Leung [Fri, 14 Nov 2008 02:13:10 +0000 (02:13 +0000)]

Grease Pencil crashed after duplicating a screen-area, and deleting a layer from the original screen-area. The duplication code was not reassigning some pointers.

13 years agoupdate for compiling cross compiling win32 on linux, had a lot of trouble with makesd...
Campbell Barton [Thu, 13 Nov 2008 23:12:38 +0000 (23:12 +0000)]
update for compiling cross compiling win32 on linux, had a lot of trouble with makesdna, the only way I could build and link was as a
win32 binary.
Still unable to link blender.exe
and run with wine.

13 years ago==Armature==
Martin Poirier [Thu, 13 Nov 2008 22:35:40 +0000 (22:35 +0000)]

Fix the roll mess in transform. Since roll is based on an automatically calculated up axis, transforming bones would mess up bone orientation. This code automatically adjusts the roll value to keep bone orientation as consistant as possible. That works all around in transform for all transformations.

Doesn't work with x-axis mirror though as that doesn't use transform elements (fixing it would be nice for later)

Most interesting is that it works with the mirror tool (obviously), so you don't have to fix all the rolls after mirroring one side of an armature.

It could be made an option if someone presents a good enough point for that, but I can't see why you'd want the previous mess instead.

NB: this also ports a utility fonction from etch-a-ton to set bone roll from an up axis.

13 years agoNormal Orientation on EditBones uses roll for Z axis.
Martin Poirier [Thu, 13 Nov 2008 21:44:32 +0000 (21:44 +0000)]
Normal Orientation on EditBones uses roll for Z axis.

13 years agosvn merge -r17405:HEAD
Campbell Barton [Thu, 13 Nov 2008 13:34:43 +0000 (13:34 +0000)]
svn merge -r17405:HEAD

13 years agosimple workaround slowdown with painting onto multiple parts of an image at once...
Campbell Barton [Thu, 13 Nov 2008 13:17:04 +0000 (13:17 +0000)]
simple workaround slowdown with painting onto multiple parts of an image at once, just use a grid of boundboxes per image.
was also running undo calls when it shouldnt,

13 years ago* use the existing function to only update a part of the image, should increase speed...
Campbell Barton [Thu, 13 Nov 2008 11:30:34 +0000 (11:30 +0000)]
* use the existing function to only update a part of the image, should increase speed a lot, except when painting on seams from opposite parts of the image. - can speed this up with multiple boundboxes - TODO.
* use brush spacing and airbrush settings
* draw a circle while in texture paint mode.

13 years agoRemoved support for nested texture trees, minor ui enhancements
Robin Allen [Thu, 13 Nov 2008 09:57:11 +0000 (09:57 +0000)]
Removed support for nested texture trees, minor ui enhancements

13 years agofor scons on linux and other *nux systems
Campbell Barton [Thu, 13 Nov 2008 02:18:35 +0000 (02:18 +0000)]
for scons on linux and other *nux systems
only install locale data if international is enabled, only install fonts if freetype is enabled.

13 years ago2 utility functions added for projection painting.
Campbell Barton [Wed, 12 Nov 2008 22:35:58 +0000 (22:35 +0000)]
2 utility functions added for projection painting.
* BLI_linklist_index() - to get an items index in a  LinkList
* BLI_memarena_use_malloc() - BLI_memarena_use_calloc alredy existed but there was no way to switch back to malloc.

also added texnodes to cmake

13 years ago== MSVC projectfiles ==
Andrea Weikert [Wed, 12 Nov 2008 21:03:42 +0000 (21:03 +0000)]
== MSVC projectfiles ==
update for texture nodes

13 years agofix bad level call in texture nodes
Andrea Weikert [Wed, 12 Nov 2008 21:02:45 +0000 (21:02 +0000)]
fix bad level call in texture nodes
BIF_preview_changed wasn't needed after all.

13 years agoAdded stubs to fix linker errors in texnodes
Robin Allen [Wed, 12 Nov 2008 20:11:54 +0000 (20:11 +0000)]
Added stubs to fix linker errors in texnodes

13 years agoBah, two more files!
Ton Roosendaal [Wed, 12 Nov 2008 19:14:46 +0000 (19:14 +0000)]
Bah, two more files!

13 years agoPatch #7897 Texture Nodes!
Ton Roosendaal [Wed, 12 Nov 2008 19:03:50 +0000 (19:03 +0000)]
Patch #7897 Texture Nodes!

Robin (Frrr) Allen did a decent job on this, so we can also welcome him
as a member in the svn committers team to maintain it!

I do the first commit with some minor fixes:
- get Makefiles work
- fix rounding issue with tiles on unit faces
- removed UI includes from tex node

A nice doc in wiki is here:

On the todo for Robin is:
- When using one or more Texture-input nodes, you cannot edit them by activating
  (as works now for Material nodes).
- The new "output node" option fails on the default case, when only one
  output node is active. It then shows often a blank menu. Will get fixed asap.
- When using a NodeTree-Texture as input node, the menu for 'active output'
  should not show. NodeTree should ignore other nodetrees to keep things sane
  for now.
- On a future todo is proper usage of "Dxt" and "Dyt" texture vectors for
  superior antialising of checkers/bricks.

General note; I know people are dying to get a full integrated shader system
with nodes. In theory we could merge this with Material Nodetrees... but I
rather wait for a solid and very well thought out design proposal for this,
also including design ideas for unifying with a shader language (GPU, CPU).
For the time being this is a nice extension of current textures. :)

13 years agoset default path to the version that creates a working binary of Blender, when buildi...
Nathan Letwory [Wed, 12 Nov 2008 16:04:14 +0000 (16:04 +0000)]
set default path to the version that creates a working binary of Blender, when building with mingw. Now there is no need to do extra copying/config changing

13 years agoChange the LCG_DIR usage to BF_name_LIBPATH where possible. FFMPEG can't be done...
Nathan Letwory [Wed, 12 Nov 2008 07:48:53 +0000 (07:48 +0000)]
Change the LCG_DIR usage to BF_name_LIBPATH where possible. FFMPEG can't be done like that yet, needs some extra thought to handle differences between vc and mingw setup