Call for 'Quick Hack' ideas (for beginner students to complete in a day)

With Google Summer of Code coming up,
We’re asking students to submit a small fix or improvement (to show they’re serious, and have the ability).

However with Blender having had many easy projects already completed,
it becomes difficult to find smaller fixes or features to work on.

We have the ‘Quick Hacks’ project but developers have been finishing them, so it would be nice to have a larger list of entry level projects.

So please reply here if you have suggestions for small fixes/improvements.
Any that seem reasonable to developers will be added to the ‘Quick Hacks’ project.

If you’re unsure, feel free to reply anyway - however, tasks taking large posts to explain, are likely too big (this is something a new developer should be able to do in a day or so…).

Also explain why this is needed/useful.

Note, we don’t know if we will be accepted into Google Summer of Code, but having more projects for new developers to start on is generally good - irrespective.

Vertex group - remove from all groups but selected.

in edit mode, and it would be useful for correcting weight painting,

you can add a selected set to a bone, then remove it from all others, with a few clicks.

Please update your post giving some more details, which modes should this work in? When would this be useful?

In theory this one shouldn’t be too hard, right? https://developer.blender.org/T41748

I just bumped into it when trying to create metallic objects from simple geometry through modifiers. It would be highly useful when trying to bevel after edgesplit+subdivision.

Suggestion: Add deformation axis to the deformation modifiers (or at least to the “simple deform” modifier)

The problem: As of now the deformation happens on the object’s local Z-axis with no way of changing it. This means that if you are in need of deforming a model you will have to rotate it in edit-mode (or apply the rotation later in object-mode) to fit the axis of deformation instead of changing the axis to fit your model (as it should be)

A simple option to change the axis in the modifier would solve so many headaches while modeling.

Edit - removed

A problem about materials.

You have a mesh (e.g. imported from an OBJ) with material mat0 and material mat1, applied to different parts of the mesh. You apply (selecting from the dropdown) Diffuse1 to mat0 and Diffuse2 to mat1. Now, in the materials list, you have no more mat0 and mat1 but Diffuse1 and Diffuse2. The only connection with the original materials names is the index in the materials list. If you do a clay render and apply Clay to both slots you end with a mesh with two Clay materials. It is up to you to remember what the first slot was about and what the second slot was about.

Now repeat the experiment with a mesh with dozens of materials, some of them assigned to the same shaders. It becomes a nightmare to remember which is which.

It would be great to be able to permantly tag a material slot with a descriptive name which remains unchanged regardless of the material assigned to it (e.g. in the original example, DoorFrame and DoorHandle) so that can always trackback what is what.

How about;
Let a student create a render trick, that renders at double speed as it only renders frames, 1-3-5-7-9-11…
Then he should compare those frames.
If the movement between frame areas is less then x%, then use morphing to do the even frames 2,4,6,8…
if its more then x% render that area on an even frame.
Morphing is the easiest part for a student with affinity towards graphics
Partially rendering an area is available in various scripts.
Combining it inside blender, would be new too.

After its ready there might be more ways to extend this

  • like ony predictive rendering areas in uneven frames
  • instead of rendering 1,3,5,7,9 try 1,5,9,13 etc (larger gaps)
  • (complexer) analyse scene and render a frame if a scene schanges more then x% 1,5,7,21,24,37,45,49

this will work since people cant see individual frames at 25fps or 30 fps.
and it could mean a huge reduction in rendertime for animations, i think especially cartoon like rendings

Can i please request:

  • Array modifier to support Radial arrays. I have done it already, it takes just a few lines to get 360 duplication with 1 checkbox on UI side. Ideally would also be able to define partial circles. It does not break any compatibility and is very useful to have.

  • better pyQT integration with examples. PyQT works well already but 1 of the problems is that it runs as an independent floater on top of Blender which makes ALT+Tab problematic (unless ctypes hackery) as well as calling bpy.ops can give you context incorrect errors (even when instructing modal ). As a dominant standard across many applications, it would be great to have it flawlessly utilized in Blender as well with some docs, examples for people to follow.

Thank you

PS. might update this list later

  • Vertex slide (hotkey ‘gg’) to be affected by proportional editing.

  • vertex slide with numerical measure input instead of just the -1…+1 range. To move a vertice 2cm away for example…now it is relative to the edge length.

1 Like

Yesterday i watched accidentaly andrew price ui suggestions from 2013 on youtube, i must agree with all things not the UI
stuff just the 1 part of the video. (a lot of simple suggestions).

I would like to be able to change the hard coded keys for copying values and the axis keys, so ctrl+c, ctrl+v, x, y, z.

This would be useful because some people use special keyboard layouts or special keyboards. For example I’ve got a keyboard with easy access to ctrl+insert and shift+insert for copy paste so it would be nice if I could use those for copying and pasting values, but currently that’s hard coded to ctrl+c and ctrl+v.

For the axes keys this is more of a convenience thing, I would like them to be next to each other. The “x means x!” thing doesn’t make much sense to me and just makes my modeling workflow slower.

@cgstrive: You say you have done it already, do you have a patch somewhere? I would learn to compile blender myself to get radial arrays.

“Automatic increment of render slot” => The idea is to have an option (maybe in the render tab?) to automatically render in the next render slot. Once in render slot 8, override slot 1, and so on. This could be particularly useful when doing render tests.

Maybe also adding the option to select the render slot from the render tab? I’m guessing this one is too easy.

Here are a few suggestions that I (not being a programmer) hope fall in the category of ‘easy to do’

-Adding vertex group support to modifiers that don’t already have it. For instance:
*Mirror

-Adding UV offset option to Mirror modifier. All mirrored geometry has its UV’s offset by a user-specified distance (this is useful in game-related modeling)

-An option for having the viewport camera go into ortographic automatically when snapping the viewport (by holding ALT). (https://developer.blender.org/T40148)

-an improved ‘Select Similar’ that can use multiple rules at once. ‘Edge Length’ & ‘Orientation’ at the same time for instance. More flexibility to narrow down your selection.

-Move to Layer (M) could show which layers already contain objects, like the Viewport layer-widget does. (I understand this might be a limitation in the UI-drawing code rather than an oversight, in which case it’s no longer an easy task)

-‘Select Similar’ in the UV view.

-‘Select uv island border loop’ in UV view. This would select the outer edges of the UV-islands that have selected geometry in the UV view.

-Colour UV Island by material. A toggle much like the Stretching visualisation, this would take the colour of the Material’s diffuse, (or lacking that:the Object Colour.) and apply it to the wireframe in the UV View.

-Interactive ctrl+LMB/RMB extrusion if the keys are held down. Meaning you can adjust the end-result untill you let you of the keys.

-Making Solidify in Edit Mode interactive.

-Making the Wireframe tool in Edit Mode interactive

-Easy Lattice creator: automatically uses minimal bounding box or normal of selection in Edit Mode to orient itself.

-‘Origin to Geometry’ could have a toggle to consider the end result from the modifier stack (Mirror modifiers being a prime example of where this is useful))

+1 for this, very needed feature! Ideally there wouldn’t even be render slots, we would instead a have a render queue or render history where every render would just be automatically cached to disk to the temporary folder until blender is closed. One could then seamlessly cycle through all rendered history buffers, but that is probably not considered a ‘Quick Hack’ anymore

Not being a coder myself I would think this one is simple enough for an afternoon coding snack.
Under Properties Window > Object > Groups > Set Offset from Active


Why? - I often find myself creating reusable assets en-mass on a separate ‘library’ file to later be linked to. It is then very time consuming to set up all assets in respective groups with correct names and respective group centers.
Select Object > Shift+S > Cursor to Active > Go to Objects Panel > Select Group > Set Offset from Cursor> repeat countless times.
This would simplify to Select Object > Set Offset from Active

Actually, we have 3 steps to do it. We lock active group, then normalize all groups and finally clean weights in all groups to avoid zero weights.

Apply selected shapekey: AFAIK you can’t apply a shapekey as it’s displayed and have to delete the basis to apply, yet shapekeys have both slider/strength values and vertex groups, allowing you to apply it to a smaller selection without changing the other areas of the mesh. So in order to do this right now, you have to apply the shapekey to a duplicate mesh then merge it back to the mesh you want, though I don’t know how this would affect other shapekeys and you still can’t change how strong the shapekey applies…

I agree with ideasman. Behaviour that you want is not clear. It looks like Mix From Shape and Shape Propagate operators.
We can’t guess if you don’t know these tools or if you want an improvement of them.

Suggestion: Add deformation axis to the deformation modifiers (or at least to the “simple deform” modifier)

The problem: As of now the deformation happens on the object’s local Z-axis with no way of changing it. This means that if you are in need of deforming a model you will have to rotate it in edit-mode (or apply the rotation later in object-mode) to fit the axis of deformation instead of changing the axis to fit your model (as it should be)

  • Array modifier to support Radial arrays. I have done it already, it takes just a few lines to get 360 duplication with 1 checkbox on UI side. Ideally would also be able to define partial circles. It does not break any compatibility and is very useful to have.

Modifiers have an origin object namefield. You can rotate and translate an empty to rotate deformation or move its starting point without changing mesh origin. A quick way to add an empty with an arrow display would be welcomed.
But IMHO, adding XYZ buttons and origin coordinates would not be as helpfull as an empty that is visible in viewport.

Here are my old ideas reminded by previous posts:
_Maybe shapekeys operators that are meshes only (Transfer Shapehey, Mirror ShapeKey, Join ShapeKey) could work for curves.

_ A tool to create a curve extrusion with a changing profile intepolated from curve shapekeys.
Imagine a bevel object with two shapekeys named 1 and 100. Bevelled curve would use shape 1 as start of curve and shape 100 as end of curve according to default 100 frames of path animation.

_A slider in Image Editor to compare 2 slots like Split Viewer do with saved images.

‘Switch Objects’ would be a really good addition. Basically it would be a hack for an empty that would make it so that only 1 child of the empty can be seen at a time. The user would then have a button that when pressed would reveal the next child object and hide the previous one.

Using this, the user can quickly swap out objects in their scene. Switch Groups are heavily used in 2d animation for switching out hands, eyes, mouths, etc. I think it would be really useful for 3d animators as well.

We talked about this in IRC, Campbell, but I think that additional smoothing algorithms added to the Subdivide Smooth and Smooth Loop Cut functions via a dropdown in the f6/T panel would be really useful. In particular, CatClark smoothing (where original verts could be moved as part of the function) would be really useful for the times when you only want to subdivide part of a mesh and don’t want to use a modifier on the entire thing.