text:
Having a UV maping problem, does anyone know what this is, and how to fix it?
I have been looking all aver for this problem and haven't run in to what this is... Normally I mark my seems and I get a nice UVMap ready to texture but sometimes I get this and it is just kicking my butt trying to find a fix.
Sorry if someone already asked this. I just couldn't find what this is and why it only happens sometimes and what is causing this.

From your screenshot, you have pinned vertices in your UV. This will keep those vertices in place, in this case resulting in the weird unwrap result.
The shortcut for pinning vertices is P - if you want to 'unpin' them, select them and press alt + P. In this case just selecting all vertices and unpinning then should do the trick :)

Thank you vary much that helped some.
Though I noticed what might be part of the problem. My maps with these projects won't stretch.
On all my other models the new map I would mark where I want them to unwrap. On this one and another instead of stretching they look the same as when I use projection mapping.
Is there a setting that stops the map from stretching? Something I might have hit on accident.

Oh I think I found it out. Sorry I'm pretty new to UV mapping but I know there is a button in 3D mode that locks everything in place.. I found the same button in UV mapping called "Keep UV and Edit mode selections in sync"  I clicked that and all is zen ' )   thank you the pin was vary helpful too.

glad i could help :)


text:
View2D Zoom 2D View hotkeys
I'd like to use Alt + Right mouse to zoom in the UV/Image Editor. Currently, it's set to Ctrl + Right Mouse
View2D has a hotkey for Zoom 2D View set to Ctrl + Right Mouse. I changed it to Alt + Right Mouse, then Save User Settings, and in the UV/Image Editor, zoom is still using Ctrl + Right Mouse.
userpref.blend is also writable.

The zoom setting you find listed under View2D refer to flat layouts such as dopesheet, graph editor, VSE...
To adjust the UV/Image Editor zoom settings you need to alter the zoom settings found under Image.

source: Stack Exchange

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/

sort: votes


text:
Only Vertices/Wireframe in Blender Render and Object Mode
I tried searching around for why this might be happening, I can only assume I hit some stupid hotkey at some point and didn't realize it. My issue is that my model is only displaying as its vertices in Blender Render and in the 3d Full View. I can see the wireframe in Object mode. It renders fine in Cycles for some reason, and in edit mode, I can see all the faces and whatnot perfectly fine. It's not an issue with Maximum Draw Type, as that is set to "textured".
Render View and Object Mode

3D Full View in Object Mode

3D Full View in Edit Mode

Any help would be great! Sorry if this is a stupid question!

You changed your material type to a HALO
In material settings, switch to a Surface type, and you'll be fine

Thank you! It seems I'd somehow set it to Halo, still not sure how that happened. I'd tried making a new surface material and assigning it to the model but for some reason it didn't work. I had to actually remove the halo material entirely for it to work.

@user15269 if this answer helped you please mark it as accepted.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/3.0/


text:
How to push a box with physics engine by another object?
I want to push a box by an animated character in Blender 2.8.
First I tried to animate the box by keyframes but this looks very unnatural.

I think this will look much more realistic when the animated character pushes the box with help of physic engine and collusion logic.
I played around with some settings regarding this in Collusion and Rigid Body. But it is pretty hard to understand what is going on there as a beginner.

Better if you use a copy location constraint on the box by a hand bone. You can set keyframes for the influence, so the character can release it.

you could try setting the box to an active rigid body type and then the character will be passive. when you animate the character with keyframes it will interact with the box.

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
How to change animation easing in Blender 2.8?
As a blender noob I do animations using auto keyframes. I like to experiment with different animation easing curves. Which I have to choose before adding animations.

In most cases I d like to experiment and try out a few easing curves, but it is anoying to always reproduce the animations.

Is there a way to simply change the animation easing in Dope sheeteditor?

The Easing can be changed within the Dope Sheet in Blender 2.8 by simply selecting the channel and choosing the Interpolation mode in the Key menu.

this didnt work for me until i selected it all with A

I noticed that going to the Graph Editor, selecting the right bezier points by pressing B and than pressing T to set keyframe interpolation, works much better for me.

all_licenses: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/


text:
How to start and stop movie sequence of image node at specific frame in python script?
I try to playback different video clips one after the other on a mesh face using keyframes.

I achived pretty interesting result with changing material offset of a solidify modifier by keyframe with python. I used this modifier because the model texture is not animatable.
screen = bpy.data.objects['TvScreen']
mod = screen.modifiers['Solidify']
mod.keyframe_insert(data_path="material_offset", frame=currentFrame, group='CurrentVideo')

The problem is that all clips inside materials are playing at the same time. Which on the one hand freeze my Blender and on the other hand I have no control over the movie image frame sequence timing.
I tried to set a keyframe for frame_start in my script but this property is not animatable.
TypeError: bpy_struct.keyframe_insert() property "frame_start" not animatable.
I also tried to mute the image texture note of all materials and unmute them by keyframe. This fixes the GUI freeze effect but video squences still playing in background.

So the final question is "How to start and stop movie sequence of image node at specific frame of mp4 by keyframe in final rendering in python script?".
Maybe there is a much better way to achive this "virtual TV model" in blender. Any tips are welcome.

Not sure how to answer but I am trying to access the start_frame parameter of a sequence strip in the VSE and my guess is it has to do with this thing called context. Looks like where ever the start_frame is being defined or allocated in it's parameter the context is where it is inherited.
So it seems you have to create a context which is local to your script so any called functions to "play at some start_frame" will be assigning the "start_frame" from a locally created/allocated "context".
See:
https://blenderartists.org/t/solved-add-effect-strip-transform-for-image-vse-lm18/688456/2
and Ctrl+F: You just need to set the context.
I have read however, this is not so good for when the local allocation is un-allocated you then have a reference which points to ??? or is broken and a potential for blender crash.
See:
https://docs.blender.org/api/current/info_gotcha.html
and Ctrl+F: # polygons have been re-allocated
Sounds like there is a start_frame being set from a GLOBAL context in your case so every start_frame=1 and that is a context you have to modify. Good luck I'm just trying to get:
bpy.ops.sequencer.effect_strip_add(frame_start=frame_start, frame_end=frame_end, type=‘SPEED’)
to use a frame_start from the selected strip and I don't know how to pass a frame_start parameter which equals the frame_start of the already selected strip without having to recreate a new context. I would imagine I could pass by reference but where is the allocated reference?
Anyway the answer is in the inherited context it seems.


text:
How to disable all addons while using blender with --background command line option?
I found the commandline parameter --addons. But when I leave the parameter value empty it does not have any effect. Blender still loads all addons. Is it possible to disable addons when using --background?

My reading of the --addons parameter is that it is to enable extra addons, not to disable the ones that are already enabled so if you leave the parameter value empty it will have no effect. I don't know whether this answer still applies to the current Blender version or whether you can activate it for your use?

A much better aproach than my research but i try to achive to boot blender with loading addons.

you can use --factory-startup, it won't load any addon
https://docs.blender.org/manual/en/latest/advanced/command_line/arguments.html


text:
Image not found may be unpacked or not saved after animation problem
I broke something. I rendered an animation out. Didnt like the final output.
Made Adjustments and tried to just render the single frame to check out the output and see if I was happy. Kept showing old render views not the new one(I have overwrite checked) I got impatient deleted the old camera, inserted a new one, moved all the rendered files out of the temp folder, then tried to re- render in the new view, no. Then  now I get blank alpha channel upon trying to view render. The render view works in 3d view, but not upon actually rendering image. I went into the dope sheet and deleted all key frames, so I got the animation part cleared, but dunno why I cant see the render any more

It is very likely that you have some sort of modifier or other setting that looks a certain way in the viewport, but the settings are different for the render.  I had a similar problem using a SubSerf modifier.  This may not be your problem, but it is something to look into.

More screenshots of the scene (used modifiers, scene debug, etc) and / or blend file would be quite helpful. It's not clear enough wtat's the problem or the error.


text:
Creating 3D pixel modeling?
I envision creating a 3D model but in the pixel art, 16-bit style. Like the old Mario or Zelda games  Not just outlined liked this but the entire model. I searched for ways to do this but i can't seem to find something like this. If someone could help me find a way to do this i would greatly appreciate it.

You could make the model normally and then use a remesh modifier to get a voxelated look

If it is a 3D model of a sprite you want, then I have actually made a Python Script / Addon that takes an image and converts each pixel to a cube with a material of the same color.
https://gist.github.com/MrSprite/ff7fda1ec4bf6850d357.  Go here and click the button that says Raw. Then you can right click on the page that opens to download the .py file.
Install it in Blender like a normal addon.
I don't recommend using images over 100x100 unless you want Blender to lag a lot.  Also it takes around 1 minute to generate 100x100 cubes, but only .39 seconds to do a 32x32 image.
Also, if a pixel has ANY transparency it will not be created, so be careful!

Nice script! :) You might get better performance if you use dupli objects or some other form of instancing.

@gandalf3 I created it for the purpose of 3D printing or rigid body physics, but I am constantly revising it, and I plan to add a feature to allow instancing of larger images. Thanks for reminding me of that!

Thankyou so much this helped a lot

@Blendy37 Make sure to accept this answer so others find it more easily!


text:
Texture map environment to simplified model
I'd like to bake a complex scene onto a simplified object, much like when you make a skybox, or output an equirectangular image. My end goal is to bring this into Unity and have other objects moving around on the floor of this simplified object.

I'm picturing something like this, where the environment could get mapped to the cylinder, and then I just use the cylinder in Unity. The simple shape could also be a dome, too.
I originally tried outputting to an equirectangular image and then projecting that on the inside of a sphere in Unity, but items didn't look like they were really on the floor.
Is there a name for what I'm trying to do here? I think this is basically what's done with reflection maps. I'm imagining that each pixel of the cylinder's texture is colored by a ray that goes from the camera to the outer environment.

I do this about 2 years ago. I lost all data. What I remember that I found  .blend file with 6 cameras (on one place and all directions L-R,  F-B, U-D)) and  renders can be used as textures for Skycube. Second way is make cube with max reflections and bake textures. I'm not sure now, maybe secont option work only in BI.


text:
Interaction of 2 armatures with each other
Please, could you say how to do so that 2 armatures interact with each other? For example, one character takes the hand of the other one & pulls it with it. But as you can see, the hand of the second character doesn't follow the trajectory of the first one.
If the bone of one hand is tied to the bone of the other hand, it will repeat the trajectory, but the mesh will stretch, not follow the selected bone. If try to fit keyframes, the different location of the keyframes will not allow this to be done correctly (the result you see on the example).
Please please please, help me with this question!

have you tried to give a Child Of constraint to the hand bone? and you only activate its influence when needed

Yes, I tried modifier Child Of, but probably I do something wrong because I don't get need result. https://i.sstatic.net/0QVwL.gif

perhaps share your file on https://blend-exchange.giantcowfilms.com/

This is my usual variant of the bones settings + I tried to add Child of, but it didn't work out what I wanted. Keep a sample, maybe you'll see what I'm doing wrong.

I think your rigging is not correct, you must parent the hand bone to the lower arm controller, so that when you rotate your controller the hand follow, otherwise it's very uneasy to control the hand properly

OK, I changed the settings of the hand bone & it worked. But now there is a small problem. How to make it so that mesh doesn't stretch? https://i.sstatic.net/wFHQn.gif

Try this: give your hand a Copy Location constraint, with the lower arm as the Target, a Head/Tail > 1, and stay in Space > World Space. Tell me if it works.

Yes, it works! Thank you sooooo much for your help!!! You're very well versed in rigging & you really helped me. Can I ask one more question, please? Is it possible to adjust the bones so that not only the arm moves with the object, but the whole body (I mean that the body also tilts to the direction where the object is pulling)? Or is it still necessary to move each bone separately (for example, root, spine)?

yes I guess you have to move the whole body, but maybe you should describe a little bit more the action

maybe an information that could help you: If you character catch an object, his hand bone can become Child Of the object so that when you move the object you also move the arme of the character. Also, there is an addon called Dynamic Parent that makes it even easy: https://www.youtube.com/watch?v=YJaJ4_O8MJg#t=04m15s

Yeah, I know about Dynamic parent. Cool thing. It really helps in creating animations. But that's not exactly what I meant. OK, I'll try to explain. For example, when one character takes the second character's hand & leads somewhere, that moves only the second character's hand. The body itself remains motionless. I.e. it doesn't bend & not following the hand.

if the controller of the second character becomes child of the hand of the first, automatically the hand of the second will follow, but yes, not the whole body. But perhaps ask a new question to see if someone has a better answer  ;)

OK, I understood. Thank you again for that you helped me.

You must parent the hand bone to the lower arm controller, so that when you rotate your controller the hand follow, otherwise it's very uneasy to control the hand properly.
Also, give your hand a Copy Location constraint, with the lower arm as the Target, a Head/Tail > 1, and stay in Space > World Space.


text:
Deformation of particle objects
When an object is added to particle system, it remains in original form. Is it possible to make so that these objects deform & wrap around mesh?

The closest I can get:

Make sure the particle object is a plane and has a good amount of subdivisions

Name it with a unique name, like 'stick'
Make a duplicate of Suzanne, remove the ParticleSystem from it (this is if you want to have the Subsurf modifier eventually on for Suzanne)
Apply the Subsurf modifier of the temporary particle-Suzanne, which leaves only the ParticleSystem to the modifier panel
(You may need to update the ParticleSystem by clicking the 'Seed' value to 1, for example)
Click the 'Convert' button in the ParticleSystem modifier

A whole lot of stick objects are created to the scene
Delete the particle-Suzanne
In Outliner, search for 'stick.'
Still in Outliner, select them all with A, then right-click one of them and click 'Select'
Press U to make them unique, select 'Object & Data'
Press Ctrl+J to join them as one
Add 'Shrinkwrap' and 'Solidify' modifiers to it

Maybe also 'Subsurf' modifier as well
There you have it

Hope this helps!

Yes, it works! Thank you!
By the way, but what if need to use not plane, need use an object of a certain shape? Shrinkwrap won't work in this case.

Yep :/ That makes things a bit more harder. I don’t have much advice on that.

OK. But thanks anyway, that you helped.


text:
GPU rendering on AMD Radeon HD 6800 series
My graphics card is AMD Radeon HD 6800 series. Can it rendering on GPU? And if it so, how to do it? Rendering animations on CPU it's veeeeeeery for a long time. 1 frame ~ 7-15 minutes & it's only 100 samples.

Update:
Here are the official list of AMD card that Blender supports for OpenCL. It does not have Radeon HD 6800.
OpenCL Supported Devices
It is likely that Blender does not support HD 6800 for GPU rendering.

I am going to assume the following:

You are using Blender 2.76 (latest as of 14/03/16).
You are using Cycles Render.

To use GPU render on Cycles Render, you need to enable OpenCL in Blender.
To do so, you need to:

Go to "User Preferences" (Ctrl+Alt+U)
Go to "System" tab.
Under "Compute Device", click on "OpenCL".
In the scroll box, choose your GPU.

When you render the next time, select GPU.

Images are linked from:

Enabling GPU rendering for Cycles?
https://www.blender.org/forum/viewtopic.php?t=25173

I tried, but eventually scene doesn't display.http://f-picture.net/lfp/s017.radikal.ru/i413/1603/95/567ef6627f0e.png/htm

What are you trying to render?

Simple scene. Cube & sphere with simple materials.

Attach the blend file in the question.

Here: http://f-bit.ru/753660

I just checked and updated the answer. Looks like it is not supported. :(

Please update your link "OpenCL Supported Devices", it is broken.


text:
Emptiness in the alpha texture
When add shader "Glossy" to the alpha texture then emptiness is reflected too. How to make that "Glossy" and other shaders don't affect what should remain invisible?

Mix a Diffuse with Glossy first, then mix it with Transapent.

It works! Thank you so much for your help!


text:
Why are the drops so large on a water simulation?
I'm trying to make a waterfall, but the water turns out too big compared to a human. Why are the drops so large? What am I doing wrong? I tried to change the value Resolution but more than 300 Blender crashes. Please help!

Make your domain a lot bigger. I believe the size of the domain and the scale size go hand in hand.

It will be pretty much impossible to pull that off without a higher resolution. Unfortunately the only answer may be to get a better computer. The fluid physics sim is not meant to be used for large areas like this, but for things like a cup of water, etc.

Did you try making your domain bigger?

Yeah, now I tried to increase the domain but water became even larger: http://i056.radikal.ru/1704/79/47a7d4491eb1.png

You can consider the 'domain' to be made up of a 3-dimensional grid of cells. Each cell is a cube and Blender calculates the properties (density of fluid, motion of fluid, etc.) for each cell.
The Resolution setting indicates how many 'cells' should be included in the simulation - effectively the number of cells along the longest edge of the domain.
So, for a domain in the shape of a cube and with Resolution set to 300 you would have a grid of 300 x 300 x 300 cells - ie, 27 million individual cells!
Most Blender crashes are actually due to running out of memory - when you perform some action (such as setting the Resolution for a fluid simulation, the number of Sub-division Surface divisions, the Remesh detail, or whatever) that results in Blender requesting a considerable chunk of memory that your computer cannot handle - so it either grinds to a halt or crashes blender (or your computer) completely.
Fluid simulations are a trade-off between cell size and number of cells. Obviously you want small cells so as to get a more accurate simulation but you also want to reduce the number of cells to improve efficiency.
In your particular example, it appears that you have a large cube domain - you can see the water running over the 'floor' of the domain. If you don't actually require the water simulation to include the droplets running over the 'floor' then a simple way to reduce the number of cells will be to shrink your domain to include only the waterfall and sufficient space infront and behind to contain any splashes off the model.
As an example, if you reduce the front-to-back dimension to only 20% of the current size then you'll save 80% of the memory requirement for the simulation. The free memory can then be used by upping the resolution further - which should give you better detail for the liquid. An 80% reduction in one dimension will mean you can get almost double resolution in the same memory (510 instead of only 300).
When baking the fluid simulation, the Bake button shows an indication of the memory required. Changing the resolution will affect this value - if it gets too close to your computer's available memory you may want to reconsider before pressing 'Bake'.

Also, make sure your fluid domain is set up correctly for the liquid you are trying to emulate and at the correct scale. For example, set the Fluid World Real World Size to match the domain size (the longest dimension) and set the vicsocity - this will affect how the fluid behaves and how the liquid breaks up into droplets.


text:
what is the cause for sharp shadows when using strong bump?
I often have a problem when lighting where to see the sharp edges on the mesh. This happens when I add any bump & when I use Lamp as a light source. And the darker the scene & the stronger bump, the more visible these edges, even when the object is smoothed. Please help with this problem. Because of this it's impossible to make quality works.

It really depends on how you're applying your bump.
If you're doing it via the new "True" displacement (or "Both") settings in Cycles materials, your mesh should be adequately subdivided in order for it to work properly. The displacement is indeed applied on the actual geometry (vertices) of the mesh, not on its faces.
To do so, try using the Subdivision Surface modifier with an adequate level of subdivision or, if you're using the experimental features on a recent version of Blender, you can make it adaptive: reference.
Also, increasing the lamp size parameter could help.

(the black spots in the last one are because I didn't put too much care in creating a seamless UV map, and a fine subdivision, together with a strong bump value, makes it more evident)

Related: Blender Cycles True Displacement

Amazing explanation.


text:
What does 'Autorun disabled' statement mean?
Could someone explain me what does this statement mean and what option should I click when it pops up?

When did it pop up? What failed to execute when it did?

Blender comes bundled with python. Malicious scripts written in python could potentially damage your computer. As a security measure the automatic running of python scripts has been disabled since version 2.6.
What this most likely means is that there is a piece of python code that is controlling the driver.
You can allow blender to auto run scripts by changing your user preferences. To do this press Ctrl + Alt + U, then head over to File and enable Auto Run Python Scripts. Although it is unlikely that someone will distribute a malicious blend file you should still make sure where you download .blend file from

More information on Scripting & Security at the official documentation.


text:
How to make the shapekey influence separate object's position?
I have a model which consists of the separate body, eyes and jaw meshes. I added a shapekey, which increases the neck's lenght. When I change the shapekey's value to 1 the eyes and jaw stay in the original positions. I want them to move together with a body mesh, while changing the shapekey's value. Is it possible? Is this kind of parenting exist?

You could use vertex parenting to have the objects follow parts of your mesh. This has similarities to the hook modifier.
Select the teeth, shift select the head, go into edit mode, select the target vertex (only one or three vertices can be selected, three vertices allows rotation when following) press CtrlP to parent the other selected object to the selected vertex.

Be careful as I expect you will deform the face for animation and the parenting will keep working. You could add an extra unattached vertex that moves with the neck shapekey but isn't used in facial animation, or maybe you could choose three vertices located one in each ear and one at the top of the head that won't get deformed in animation. You may also need the armature to follow so that any animation will happen relative to the new location, or parent a facial armature which will take the teeth and eyes with it.

Thanks for the solution. Although I doesn't work in every case ,since the model I've made is some kind of mesh editor (you can modify every part of the mesh using shapekeys). I think it is impossible to make one shapekey work fine, without the other causing undesirable result. Or maybe I haven't found a good solution yet? Anyway, great tip man.


text:
How to make an animated survey graph?
I try to make an animated graph like the one below (the value changes according to the post's lenght). I need about ten poles to be animated. I suppose that using drivers may be a good solution, but I don't know how to achieve it. Thanks in advance.

There are two techniques for animating text.
The first technique is to have a vast number of text objects whose hide_render property (the camera icon in the outliner) is keyframed so that each only shows up in the rendered scene for the appropriate frame or frames.
The other is to use a frame_change_pre handler (python) to change the body of the text curve.
Here is a modified version of the example from Garrett's answer to How can I make dynamic text in an animation?
import bpy

scene = bpy.context.scene

def recalculate_text(scene):
    obj = bpy.data.objects['Text']
    bar = bpy.data.objects['Cube']
    obj.data.body = "h=%.1f" % bar.dimensions[2]
    obj.location[2] = bar.dimensions[2] + bar.location[2] + 0.2

bpy.app.handlers.frame_change_pre.append(recalculate_text)

(I modified the default cube by moving its origin to the bottom of the cube, and animated its Z size property).
You would have to put this python script in a text buffer and run it.  If you want it to automatically run every time blender loads the file you should give the text buffer a name ending in .py and click the Register checkbox for that text buffer.  This also means you will have to load the .blend file Trusted (either using the Reload Trusted button, or by invoking blender with the -y flag).
The other technique of having a swarm of text curves whose visibility is animated is demonstrated at http://web.purplefrog.com/~thoth/blender/python-cookbook/data-graph.html .  Here is a relevant excerpt:
def setVisibility(obj, f1, f2):

    if not f2 is None:
        obj.keyframe_insert(data_path='hide', frame= bpy.context.scene.frame_end+10)
    obj.keyframe_insert(data_path='hide_render', frame=f1)
    obj.keyframe_insert(data_path='hide', frame=f1)
    obj.hide = True
    obj.hide_render = True
    obj.keyframe_insert(data_path='hide', frame=0)
    obj.keyframe_insert(data_path='hide_render', frame=0)
    if not f2 is None:
        obj.keyframe_insert(data_path='hide', frame=f2)
        obj.keyframe_insert(data_path='hide_render', frame=f2)

def makeText(text, loc, f1, f2):
    curve = bpy.data.curves.new("label", 'FONT')
    curve.body = text
    o1 = bpy.data.objects.new("label", curve)
    bpy.context.scene.objects.link(o1)
    o1.location = loc
    if not f1 is None:
        setVisibility(o1, f1, f2)
    o1.parent = bpy.data.objects["font folder"]

    curve.materials.append(bpy.data.materials["text"])

    return o1

def make2Text(text1, text2, loc, f1, f2):
    o1 = makeText(text1, loc, f1, f2)
    o2 = makeText(text2, loc, f1, f2)
    o1.data.align = 'RIGHT'

    return (o1, o2)

# animating text by creating hundreds of individual text objects that pop in and out
f1 = -1
for i,xy  in enumerate(data):
    f2 = frameForX(i, len(data), f0, f9)
    f3 = frameForX(i+1, len(data), f0, f9)
    if (i+1 >= len(data)):
        f3 = None
    if (f2>f1):
        make2Text("x=%d,"%xy[0], "y=%.1f"%xy[1], [4,6,1], f2, f3)
    f1 = f2

Thanks for the solutions @Mutant Bob! I'll check out all of them.


text:
How to set a specific value for multiple shape keys?
I have about 300 shapekeys and want set all of them to value 0.5 or 1. Is there a fast way to do it?

is it for one object ?

small script to set them all to a new_value except the basic shapekey :

select the object
copy paste and run the script

import bpy

new_value = 0.5

for shape in bpy.context.object.data.shape_keys.key_blocks:
    if shape.name != 'Basic' :
        shape.value = new_value


text:
How to create a realistic tooth enamel material?
I tried to mix the Glossy and Translucent shaders to create the enamel material, but the effect wasn't good. Have you got any ideas how to set up the nodes to make it look realistic?

Good results can be done only with tooth geometries that consist of 2 surfaces: dentin (refraction 1,45) and enamel (refraction 1.7). The tooth is an anisotropic volume with numerous layers non of which is actualy solid. Can you give us some dental scan or something? I can do some tests in the evening -> mix of glossy, sss, transparent and volume absorption should yield what you want

@Gonzou, nice teeth. where do you go to the dentist? :D

Thanks Vince. Nice to hear you like it :). The secret is I just brush my teeth regulary ;).

(this is a converted comment)
Good results can be done with tooth geometries that consist of 2 surfaces: dentin (refraction 1,45) and enamel (refraction 1.7).
The tooth is an anisotropic volume with numerous layers non of which is actualy solid.
Front-lit:

Back-lit:

Can you give us some dental scan or something? That way I can do some tests in the evening.
It should be mix of sss and transparent for the enamel with glossy on surface and yellow tinted volume absorption for dentin.
This should yield what you want. Adding the refraction and anisotropic element should also help but maybe that will be just an overkill..

Very interesting! How the geometry have to look like? A tooth and another one inside it right?

Thanks for the suggestions @Jerryno! I'll give it a try.


text:
What does abbreviations like DEF, MCH, CTRL, WGT stands for in rigging?

I often download the .blend files with the rigged characters. There are some abbreviations like DEF, MCH, CTRL, WGT in front of the bone's names (like e.g. MCH-counter_spin). I guess what all of them stand for, but is there any rigging expert here, who'll explain exactly what do they mean? Also, are there any other abbreviations I haven't shown above? Thanks in advance.

Every rigger uses their own bone naming conventions, prefixes or suffixes, usually in agreement with animators for which the rig is intended (in studio). There is no standard, but there are however some commonly used terms:

ROOT, MASTER - first bone in hierarchy or sub-hierarchy (tentacle_root)
DEF - bone contributing to deformation
MCH - mechanism/mechanical helper bone
ORG - original bones of metarigs from which the final rig is generated
CTRL, CON - control bones - various bones meant to be operated by animators
JNT - a joint
WGT, SHP, CS - widget, shape, custom shape, etc. - meshes to represent bones
IK, FK - bones belonging to inverse or forward kinematic bone chains
STR, NSTR, ASTR - stretch bones, non-stretch bones, anti-stretch bones (I've also seen SCA, NSCA, ASCA as scale, non-scale and anti-scale)
SPL - IK spline bones
MM, MUSC - muscle mass, muscle - bones to represent and bind muscles
POLE - IK pole bones, also usually just marked as CTRL
CW, CCW - clock-wise, counter-clock-wise, for marking rotation direction or bones for hinges
CEN, LFT, RGT, LF, RT, L, R - center, left, right

Thanks for the detailed answer man! It'll be a real compendium for future wanna-be riggers :).

I've found the VIZ abbreviation also (is it similiar to WGT?). Could you explain this one too? Thanks.

@PaulGonet viz usually stands for visualization - like pre-viz, archviz,.. probably is a widget like you guess. It's hard to tell before inspecting the rig and function. Some riggers use abbreviations only they understand which are not clear and sometimes it can be in different language with an english bone name - hard to quess also.

DEF: Deform.  A bone which deforms the mesh.
MCH: (Not sure)
CTRL: Control bone.  The ones that typically control DEF, and get key-famed.
WGT: Widget.  So likely a polygon used to make the widget for a rig.

Please, edit away!


text:
How to create a strong halo light effect?
How to achieve the strong light effect (you may see in some games and 3d renders), where the light is so strong it's penetrating the objects?

Use the compositor Glare node with the type set to 'Fog Glow'.
Ensure you have a suitable emission material behind the 'windows' to ensure there is a bright area for the glow to act on. Add a 'Glow' node and set the type to 'Fog Glow'.
Adjust the parameters of the Fog Glow and/or change the intensity of the emitter to get the desired effect.

No glow, a moderate glow, a strong glow :


text:
How to make the sculpt detail size always look the same?
I've been sculpting using the dynamic topology. Set the detail size in the Dynotopo panel. When I zoom out of the object and sculpt, the detail size is appearing bigger. Is there a way to make the detail size look the same no matter how far the view from the object is?

You have to switch to Constant Detail in the Dynotopo panel.


text:
How to create a distorted reflection glass?
How to distort a glass reflection to make it look the same as pictured below?

I don't know about the physics of such glass, But it can be created using standard bump mapping.

The light path is not necessary here, but just to be cautious ...

For the right reference image, you can increase the distortion in the noise texture.


text:
Apply depth transparency to array object
Can I fade in transparency of a material based on distance to camera when the object is part of an array of objects? It seems that they only use the original object's location attributes. However when I apply modifiers the material still won't attenuate based on ray depth?

I am trying to fly through the array objects, but I want to fade them in gently as I go so that they don't 'pop' into view.

Perfect, thanks for that! But you didn't make an answer so I can't upvote it :(


text:
Can I constrain an object size to Camera angle of view?
After I import "Images As Planes" (using addon) I would like to place the images in front of the camera like a rostrum, making the corners match the camera frame. Or perform the best fit of the height or sides if the images are a different shape (vertical aspect).
I know that I can set the camera to orthographic and this fixes the relative dimensions on z axis, but I want to make a objects initial scale or position fill the camera view.
This way I can always return to a 1:1 relationship without borders or overshoot.
USAGE:
This is helpful when creating layers of images or movies that you may want to animate in 3D view (relative to each other) but allocate to layers for actual compositing.

Are you sure you are not looking for the Background Image feature, which is in the Property panel? Like this.

Thanks but no, that would be a guide image, I want to layer photos or cell animation but keep the image frames registered at the edges of the camera view.

Actually, it can be done with both perspective and orthographic cameras. I would like to suggest the universal way, which needn't any reset on the current camera transformation:

For Perspective camera:

Enable Import Image as Planes and Simple Align in Addon list.
Import the target image as plane. When importing, Choose Dots/BU as Plane dimensions, and set the longest side of the image as Definition value. For example, if the image resolution is 1920 px x 1080 px, then you should type in 1920.
Set the render resolution the same as image, to set the correct perspective for camera.
With the plane selected, hold Shift to further select the camera, then find Simple Align tool in the Tool Shelf, click XYZ button to align both rotation and location of the plane to the camera.
Select the plane only, then input like this: GZZ=-focal_length/sensor_size. For example, if the focal length of camera is 35, and sensor size is 32, then press GZZ=-35/32. Then you'll get what you want.

For Orthographic camera:

As above.
As above.
As above.
As above.
Select the plane only, then input like this:
GZZ=-ortho_scale/2. For example, if ortho_scale=8, you should input GZZ=-8/2. Then Tab into Edit Mode, S8.

P.S.: Doing math while transforming is only available in Blender 2.70+. However, you can do the math elsewhere out of Blender, and paste the result in.

When I try to do this: the plane I want to align to the camera edges is moved to the camera's origin and not it's projected view port; any ideas why?

Also, Can you elaborate what 'gzz' is supposed to do? It appears to want to move the plane along the z axis, the second press of the 'g' key appears to do nothing, though pressing 'g' a third time unlocks the transformation from the z axis.

@ThorSummoner I see your point. I've updated my answer. That's because the operation method for the new numberal input feature. So now you have to type = or * before doing division. The GZZ means to translate along its local Z axis.

@3pointedit I wonder if this helps?

It seems that the easiest solutions was to conform the scales so they all match up at 3D space Origin point, 0,0,0.
If I import an image that measures x=1920, y=1080 use the Import Images as Planes addon and set the Plane Dimensions variable to Dots/BU (this matches the longest side-edge or height) to  a single Blender Unit. In this case I would make it 1920.
The camera should be set to orthographic (scale 1.0) and placed at 1 BU above the Image Plane object.
A render will match perfectly. For off aspect images choose the width measurement

Easiest way is to use the Import Images as Planes addon, then add 2 constraints to the plane. 1. Copy location > camera 2. Copy rotation > camera 3. add a displace modifier to set distance from camera 4. add a Project UV modifier > source camera. Then set the scale in the modifier properties.
The image will now scale with the FOV of the camera. Make sure that the scale takes into account the aspct ratio of the source image and the project dimensions.


text:
Can I choose which frames to render in an animation?
I want to analyse an existing movie clip for edit points. At each edit point along the length of this clip I would like to render the frame found there. I would like to discard the rest of the frames... or simply not save them at all. I know that I can stipulate a render range from command line when running Blender headless, but I need it to be a dynamic variable, as I don't know when each frame will be chosen to save.
Here is the edit point discovery nodes. I subtract the movie from itself by a difference of one frame then use the Levels node to pass an average value to the math node to act as a boolean. Currently this lets me write a black frame (Discard Frame) or the edit point frame (Keep Frame).
If I cannot simply restrict the frames written then I would like to send the Keep Frames to a different folder than the Discard Frames (I can delete them later). Or I could remove the unique frame sequence number code from Discard Frames so they overwrite themselves. Maybe the File Node could do this?

You know how to render headless via command line. Why not writing a shell script with a variable which drives the rendering of the one exact frame you’d like to have rendered?

There's no way to know which frame I want until the compositor checks the source


text:
How can I adjust keyframes of multiple objects when some are invisible?
I have set up a scene with many objects at 24fps. Now, I increased it to 60 fps (2.5 times more). To keep everything at the same speed, I increased my frame count by 2.5 times. However, I cannot do the same for my objects as some are invisible in both rendering and the viewport. (Easier for previews) I do not want to have to remove their keyframes one by one and re-add them. How should I get about doing this? Is there something in the graph editor I can use?

Yes, you can do that. At the bottom of the graph editor there is a ghost button:

Push it in, and now you need to make everything visible in the viewport. Since it is keyframed, this won't do anything. Then, without changing frame enter a. You can now return to the graph editor and edit everything. I just needed to reset the 3d cursor and resize everything


text:
Path constraint with physics (rollercoaster)
I'm fairly new to blender and I want to build something similar to a rollercoaster. I already got the path and follow path constraint with F-Curve editor and everything down, but I need something more realistic. Is there a possibility to control the follow path constraint like it's driven by gravity? Like accelerating downhill and slowing down uphill and stuff like that - Just like a real roller coaster.
I suppose I could do It by putting a real car with wheels and such on a track and animate it with the rigid body tools, but that would require a good wheel construction with multiple wheels to keep the car from derailing... I think the path thing should be way simpler in terms of optimization, modelling and the overall mechanics, I just don't know how to do it. Do you?
I would be glad if someone could give me a hand with this!
all the best
Simon

One idea to do would be to manually animate the F-curve for the evaluation time of the curve to which your roller coaster is constrained to. You cannot manipulate the speed directly, since the F-curve is essentially a plot of distance versus time. But you can manipulate the slope at any point in this curve (slope being the speed of the object at that point on the curve). See the figure below for a reference.
The idea is to put key-frames on the F-curve at position where you expect the speed to change (like top of a hill). Then use the Beizer handle to change the slope of the curve to close to zero. Do not make it totally zero cause that would cause the roller coaster to momentarily stop and then start moving again (which is unnatural). Also note that this will automatically cause your coaster to accelerate or decelerate in the correct way, since the slope (i.e. the speed) also changes with time once you manipulate the Beizer handle.
I recently made a roller coaster and the snapshot of the F-curve is from there. I haven't found a way to do this through simulation (thinking about posting here for help). But this is the best I could do manually. You can see for yourself that at same places it still looks unnatural (e.g. at 1:30)


text:
Creation of Navigation mesh object dynamically
I have a grid and at run time my application determines certain path on the grid. As shown in the image. When the path is calculated, I have list of center of all the cells, for example starting from 'A' till 'B' shown in the image.
Now, my question is, if there is a way I can dynamically create a navigation mesh from the list of centers, starting from A to B. By dynamic I mean, passing the list of centers, can I create a navigation object in python ?
Please help me with some idea or code snippets, thanks in advance !

(Supposing you are working in the bge): If you dont care about it beaing a single object, you can simply create the strucure from the little squares in an iterative fashion (moving an empty around and activating Add Mesh-actuators (I believe it is called something like "Mesh edit", I have to admit I don't know the exact name).  However, I don't think there is a meaningful way to create a real mesh inside the BGE. I hope I am wrong on the last one. I hope this helps.

Thank you so much for your reply. But I am sorry, I dont quite get that. For example, I have a python-dict which has the centers on the selected cells from the grid. Now is there a way I can create a new navigation mesh object , may be by using Blender python API or something,  somehow from the cells I have in the dict.

I don't see a meaningful way to do it with bpy.directly. Instead, by using the logic-bricks and python together, you could use an actuator through Python. See here: https://www.blender.org/api/blender_python_api_2_62_release/bge.logic.html

Also, you could maybe have all the grid's objects around but in a hidden + ghost state. Then you could try to make them visible and disable the ghost-state by iterating through them. In any case, you must be able to convert the center's co-ordinates to the position in the grid.

Thank you user277143, but still its not clear. I have this grid, as shown in the image. And I have an object which is allowed to move on the grid. For that I need to determine a path, which in this case is a sequence of cells from the grid. To make the object move, I have some python set-up. As pointed out in the earlier comment, using the Logic-Bricks, I have an Steering Actuator object (with path following behavior). For now, the navigation mesh for this steering actuator is hardcoded.

But needless to say, other than the shown path (A to B) in the image, the I will have different path structure and so I need to reassign my steering actuator with newly formed navigation mesh.  Hence, I was wondering if I could generate this navigation mesh on the fly (from the list of cell, which is the newly generated path) and assign it to my steering actuator. Because the grid has been used as a graph for A* path finding and I could only get a list of cells as the path.

Wait... Is your problem about steering an object? I thought you meant that you want to create the physical mesh. If you don't need the object, you can simply have a loop in the Python that changes the objects position. What is the problem then? The pathtracing? Or did I once again get it wrong? Sorry if I am too dumb to understand.

Sorry, now I think I kinda got it. You have the path, but the steering actuator refuses to co-operate. My idea would be to have the position of the mesh modified inside the bge. (Loop over the cells and do an interpolation through another loop inside the outer one.) Any reason this is not applicable?

Thank you for your constant support. The second part is some what in the direction. I have the path but that is just the list of cells. To make the object move in the Game - Logic, I need to have a navigation mesh. My problem is to create this navigation mesh. This navigation mesh is such that, it very likely should have small planes like in the grid and these planes have the same center as the center of the cells which i have in the list.


text:
How get length of Navigation Mesh?
I have a navigation mesh (as shown in the attached picture). The navigation mesh consists of curve and array modifiers. As it is has an array modifier, it consists of strings of planes (I see it when I switch to 'edit mode').
My question is, can I iterate over the navigation mesh to get its the length and coordinate of center of each small planes in the navigation mesh. If yes then, please give me some python based example. Thanks in advance!

Since each of the small planes are the faces of the mesh, iterating through the polygons on the object mesh data provides access to the coordinates of the center of the face. Then using two consecutive coordinates, the distance between the centers can be calculated. This approach assumes the previous face is adjacent to the current face. Additionally, because accessing mesh data uses bpy, any changes will not occur while the game engine is running.
import bpy, mathutils

plane = bpy.data.objects["Plane"]

previous = None

for poly in plane.data.polygons:
    center = mathutils.Vector(poly.center)

    if previous:
        previous -= center
        #print length and center
        print(previous.length, center)

    previous = center

Thank you so much for your effort. I tried this code and it works like a charm. But i have a further question, I am running blender for my robot simulation. The simulator is called MORSE which uses the blender game engine. Is there a way, to obtain the similar result (as in the above script), in the blender game engine ?

Thank you so much !! Your answer helped me immensely. Thank you so so much.


text:
How to copy constraints from one bone to another?
I've created some shapekeys driven by the bone controllers for my character. Then I gave constraints to the bones on the left side. Now I want to copy and paste them to the right side. Two questions:

how to do it?
is there a fast way to copy all of the constraints from left to right side?

You can use the script below. It's pretty quick and dirty, but works.
The value of copyFrom in line 3 determines if you're copying from left-->right (if its value is "L") or right-->left ("R").
The armature must be selected for this to work.
import bpy

copyFrom = "L"
pBones = [ b for b in bpy.context.object.pose.bones if b.name[-2:] == ".%s" % copyFrom ]

for b in pBones:
    for c in b.constraints:
        otherSide = "R" if copyFrom == "L" else "L"
        otherBone = bpy.context.object.pose.bones[
            b.name.replace( ".%s" % copyFrom, ".%s" % otherSide )
        ]

        nc = otherBone.constraints.new( c.type )

        for prop in dir( c ):
            # This is fairly ugly and dirty, but quick and does the trick...
            try:

                setattr( nc, prop, getattr( c, prop ) )
            except:
                pass

EDITED: As requested, here's the 3rd version of this script that:
1. Inverts the values of properties (turns target bone names from L to R and vice versa)
2. Switches between min and max values in properties between sides.
3. Turns influence 1 into 0 and 0 into 1.
4. For other numerical props that aren't min/max/influence, multiplies values by -1.
Works as described in this gif made by @Gonzou.
import bpy

copyFrom = "L"
pBones = [ b for b in bpy.context.object.pose.bones if b.name[-2:] == ".%s" % copyFrom ]

for b in pBones:
    for c in b.constraints:
        otherSide = "R" if copyFrom == "L" else "L"
        otherBone = bpy.context.object.pose.bones[
            b.name.replace( ".%s" % copyFrom, ".%s" % otherSide )
        ]

        nc = otherBone.constraints.new( c.type )

        for prop in dir( c ):
            # This is fairly ugly and dirty, but quick and does the trick...
            try:
                constrProp = getattr( c, prop )
                if type( constrProp ) == type(str()) and constrProp[-2:] in [".L", ".R"]:
                    # Replace string property values from L to R and vice versa
                    oppositeVal = constrProp.replace(".L", ".R") if constrProp[-2:] == ".L" else constrProp.replace(".R", ".L")
                    setattr( nc, prop, oppositeVal )
                elif 'max_' in prop:
                    setattr( nc, prop, getattr( c, prop.replace( 'max', 'min' ) ) )
                elif 'min_' in prop:
                    setattr( nc, prop, getattr( c, prop.replace( 'min', 'max' ) ) )
                elif prop == 'influence':
                    # Influence 0 becomes 1 and 1 becomes 0
                    setattr( nc, prop, abs( constrProp - 1 ) )
                elif type( constrProp ) in [ type( float() ), type( int() ) ]:
                    # Invert float and int values ( mult by -1 )
                    setattr( nc, prop, constrProp * -1 )
                else:
                    # Copy all other values as they are
                    setattr( nc, prop, constrProp )
            except:
                pass

Works great @TLousky :). Thanks! Is there a way to apply opposed constraints' values to the opposed side?

Sure, @Gonzou. Inverse numerical values ( X -1) or bone references? (left to right)? or both?

Wow! Amazing edit! This is what I wanted :). The last option I would like to ask you for is a script that flips the values in a way shown in this .gif: http://giphy.com/gifs/bone-constraints-copying-in-blender-3o85xtkELyJ5sva1Wg

I visited your blog BTW. Really interesting stuff you've got there :O. Amazing works!

Thanks @Gonzou :) Updated the script, now works as described in your gif. Enjoy!

I've made some tests of your newly posted script and it really flips the values. The problem is the constraints applied to opposed bones don't work. Please see the .gif: http://giphy.com/gifs/xTiTnrK6FVIpqh3n2M Anyway thanks for your effort, cause first script works great and it will be really a time saver for me :).

@Gonzou, the opposite doesn't work because the influence is set to 0, like you showed in your previous gif. If you don't need that bit it's easy to remove it from the script.

You're right. I've missed that one O.o. Once again thank you VERY VERY MUCH for your help!

Blender has a built in way to copy bone constrains, but it only copies from one bone.
In pose mode, select the bone you want to copy the constraint to, then select the bone with the constraint (that way it is the active bone).
Then press Space to bring up the search box and type in "copy c", select "Copy Constraints to Selected Bones".

Thanks @David♦. This works great! I also found out, that the option you mentioned can be found in the Pose Mode menu (Pose-->Constraints-->Copy Constraints to Selected Bones)

@Gonzou PS you do not need the "@ david" whenever the system does not prompt it. (the author always gets pinged)  How do comment @ replies work?

Good to know. Thanks for a tip. I always wondered how it works BTW.

Improving on TLousky's answer.
The problem: you don't always want to invert the sense of the influence. I don't know why this made sense originally. So I just ripped it out and made influence the same. That didn't work, however, as some bones really flew off into crazy-land when I did that. But all the various COPY_* constraints need to have influence left alone. So I did some if/else logic to take care of that case.
Also, many hundreds of my bones are named eg bone.R.001 instead of bone.001.R. This script failed in that case.
Also, I didn't know how to use it. How to use it in Blender 2.80+:

Create a Script tab. You probably already have one.
Load up the Python script into the window.
Select your armature and go into Pose Mode with it.
Run the script with the Run Script button in the upper right.
If you have a complex armature, it can take 30s to a minute to run. Be patient. For some reason you don't get any output until it's done running, so the output is just for debugging after a run is over.

Here's the improved script.
import bpy

"""
the 3rd version of this script that:

1. Inverts the values of properties (turns target bone names from L to R and
   vice versa)
2. Switches between min and max values in properties between sides.
3. Turns influence 1 into 0 and 0 into 1.
4. For other numerical props that aren't min/max/influence, multiplies values
   by -1.
"""

def print(data):
    for window in bpy.context.window_manager.windows:
        screen = window.screen
        for area in screen.areas:
            if area.type == 'CONSOLE':
                override = {'window': window, 'screen': screen, 'area': area}
                bpy.ops.console.scrollback_append(override, text=str(data), type="OUTPUT")

print ("STARTING ======")

copyFrom = "L"
pBones = [ b for b in bpy.context.object.pose.bones if ".%s" % copyFrom in b.name ]
for b in pBones:
    otherSide = "R" if copyFrom == "L" else "L"
    otherBone = bpy.context.object.pose.bones[
        b.name.replace( ".%s" % copyFrom, ".%s" % otherSide )
    ]
    #print(f"Removing Constraints on otherBone={otherBone}")
    [ otherBone.constraints.remove( c ) for c in otherBone.constraints ]
    for c in b.constraints:
        print(f"constraints  b={b} / c={c} / otherBone={otherBone}")
        nc = otherBone.constraints.new( c.type )

        for prop in dir( c ):
            # This is fairly ugly and dirty, but quick and does the trick...
            try:
                constrProp = getattr( c, prop )
                if type( constrProp ) == type(str()) and (".L" in constrProp or ".R" in constrProp):
                    # Replace string property values from L to R and vice versa
                    oppositeVal = constrProp.replace(".L", ".R") if ".L" in constrProp[-2:] else constrProp.replace(".R", ".L")
                    setattr( nc, prop, oppositeVal )
                elif 'max_' in prop:
                    setattr( nc, prop, getattr( c, prop.replace( 'max', 'min' ) ) )
                elif 'min_' in prop:
                    setattr( nc, prop, getattr( c, prop.replace( 'min', 'max' ) ) )
                elif prop == 'influence':
                    # Influence 0 becomes 1 and 1 becomes 0 - why?
                    # if this is a Copy Rotation/Location/Scale/etc constraint, we want to keep influence
                    if c.type[:5] == "COPY_":
                        setattr( nc, prop, abs( constrProp ) )
                    else:
                        setattr( nc, prop, abs( constrProp - 1 ) )
                elif type( constrProp ) in [ type( float() ), type( int() ) ]:
                    # Invert float and int values ( mult by -1 )
                    setattr( nc, prop, constrProp * -1 )
                else:
                    # Copy all other values as they are
                    setattr( nc, prop, constrProp )
            except:
                pass

print ("FINISHED ======")

This version of the script works for me much better, so I'm sharing it to the world!

Note: this seems to completely break any IK constraints on bones. Pole angles are reversed, all influences zero. Also seems to break limit location/rotation constraints and stretch-to constraints. So... use with caution.

NOTE - You can also use a Blender inbuilt function called "Edit_Mode > Symmetrize"
OR
import bpy

armature = bpy.context.active_object.data

if not bpy.context.mode == 'EDIT_ARMATURE':
    armature.select = True
    bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.armature.select_all()
bpy.ops.armature.symmetrize()


text:
How to make a procedural hair strand texture?
I'm working on the manga-stylised hair strands created from simple planes.

I'm using the b&w image texture (.jpg) as a transparency mask. I now want to exchange the .jpg image with the similar texture, but created procedurally. How could I recreate the texture pictured below using procedural textures?

To do this I would use a mapping node and a noise texture:

Which creates:

The key here is that the mapping node is stretching the noise texture along the x axis by having the 'x' value of the scale to be very small. The closer to 0 it gets the more stretched out it is.
You can then increase the scale value on the noise to increase the number of 'bands' in the noise.
I then used the 'Fac' value of the noise instead of the 'Color' as the output for the shader to display.
Note: I used 'Generated' coordinates but this should work with other coordinates, like UVs. The axis you need to stretch with the mapping node may change depending on the orientation of those coordinates.

Thanks for a solution Ray! This is exactly what I was looking for :). Now I have a better control over strands thickness (I can easily randomise it using Detail and Distortion sliders of a Noise Texture node). Oh, and you were right- using UV coordinates gives a slightly better result.

I see great use for your nodes and thank you.


text:
How to restore custom layout/panels when loading a blend file with different settings?
I've downloaded a .blend file recently and all of the interface elements look very small. Is there a way to quickly resize the buttons within the panels according to my personal settings?


text:
Which render engine renders faster? Blender Internal or Cycles?
I wonder which render engine is faster? I mean, you have 2 identical scenes and render it using BI and Cycles. Which image will be generated faster? What will be the time difference?
Do you know any site (please post a link) which shows the results of such comparison?

Related: http://blender.stackexchange.com/q/5820/599

Blender internal is much faster is the jist of the situation. However the topic of which is the fastest is much more complex than that.
Blender internal renders completely differently, using a 'biased' method. This means it is biased as to which light rays it follows (the important ones). This is generally faster and cleaner than cycles renderings but less realistic. It uses short cuts to simulate the flow of light. Its lighting model is more simplistic and easier to compute.
Cycles is 'unbiased'. It shoots light rays everywhere and you have to wait for the image to become acceptable in terms of random noise. If noise is okay in your image, it may be possible that cycles can render faster than blender internal. Most people dislike noise in their images, and to clean up all the noise it can take a very long time, especially for certain light rays like reflections and refractions.
Comparing the two in terms of performance is not really a useful exercise because they will give different results. It will be comparing apples to oranges best case. You use cycles if you want very close to realism. Blender internal can be used for less realistic rendering. Blender internal can be made more realistic if you have a great deal of skill.

you dont have to clean up noise if you just have enough samples ,clamping and a bit of Node magic.


text:
How to remove (unlink) all the grease pencil layers?
I have plenty of grease pencil sketches in my blend file. Is it possible to remove all of them very fast?

Short answer:
Yes!
Press N, go to Grease Pencil and uncheck the checkbox:

This will hide all grease pencil sketches, while retaining the information in case you want your sketches back at a later time.
Long answer:
In the Viewport press N and go to the Grease Pencil portion of the menu on the right.

There are several ways to remove a grease pencil sketch, you can just hide the grease pencil (the checkbox), you can delete a frame, you can delete a layer (the "X"), or you can hide a layer (the eye).
You can use the RMB or use Shift+D to get the grease eraser. Use the LMB (or RMB depending on the method) to erase, and the MMB to change the size of the brush.

Uncheck the 'check box'. Simple and effective :). Thanks a lot NoviceInDisguise Graphics!

I'm not able to find the Grease Pencil menu in blender 3.0. It may have been moved

You could also run a script to remove the layers after saving the .blend the sketches should be removed.
import bpy

for g in bpy.data.grease_pencil:
    for l in g.layers:
        g.layers.remove(l)

this seems to wreck the grease pencil for futrher drawing on the same blender session (not even opening another file will restore the funcitonality)

In Blender 4 it's in the side menu (hit n) > view > annotations. You can delete the annotation with the - button


text:
Strange artifacts in material transparency (viewport)
I wonder what's causing this kind of problems and how to get rid of it. I tried to remove doubles and recalculate normals but these don't work. Any ideas?

They look like internal faces.

I've checked the mesh using the Mesh Lint addon and there are no internal faces there.

This is caused by the obsolete blender viewport engine. The alpha faces should be depth-sorted which does not happen and it's a known limitation.

I think this is just a viewport display bug as Jerryno said.

Realtime renderer alpha artifacts
I think is related to the way polygons are drawn from the viewport engine.
To make the viewport render faster, the algorithm doesn't take into account whether a face is in front of another, leading to such artifacts. It happens quite the same in other realtime engine like Sketchfab viewer (see Why order matters section). This is pefectly understandable: the software should perform much more calculations if it should not takes into account only the face visibility but also the alpha depth.
See in the image sequence below how till I'm stacking the quads one above the other in order (latest on top) all works well, while switching their position leds to wrong results:

At the end, it seems more important the order in wich faces are "stored" in the file than the alpha&camera-distance factor. The artifacts in the picture comes from a that. Some faces are drawn in front of other even if they are behind.
There are some freshly implemented viewport alpha options for cycles, like BGE's ones, but despite their promising names, they don't work (yet).
Here's a reel of the options in BGE:

While in Cycles you can only see a difference when "Add" is enabled

I personally think developers are "working on it".

Thanks for the technical explanation Carlo. Hope this kind of display malfunction'll be fixed in the future Blender releases, cause it looks very ugly. BTW I'm impressed by your large blender knowledge.

Thanks @PaulGonet, for your kindness but it's not much "technical". At the end it's just what I understood so far, I wasn't able to find further references. I wouldn't call it malfunction, nor a bug. It's just "high perfomance mode", and the "beauty/quality mode" is not currently available.


text:
Animating the origin point location. Is it possible?
I want to animate the rotation of a plane (I need to move it from position 1 to position 2, using 2 turns and rotating by Z axis) as in the picture below. However to do so, I need the origin point to move from the left to the right side of a plane. Is it possible to keyfame the origin point location?

This should be possible using Shape Keys.


text:
How to manage the shapekey's position faster?
In a Vertex Groups panel there is a possibility to move the selected group (which lies on the bottom of the list) to the top by clicking the 'down arrow', but in the Shape Keys panel there is not such option.

I've made a model which has over 200 shapekeys. You can modify every part of a body- from the top of the head to the toes.

The problem is when I try to add a new shapekey to the upper part of the body. It appears on the bottom of the list and I have to click the 'up arrow' over and over again to place it higher. Is there some way to place the new shapekeys on the top faster or add a new shapekey to the specified position on the list?

No, as far as I know, this does not exist in blender without a modification.
Solution: Open all of the shape key filtering options and click the (az) symbol; This will alphabetize your list, and since all of your shapes are so organized in the first place, all you have to do is rename a brand new shape to it's proper category and it should end up there automatically.

This should put all shape keys under their proper headed, as long as the all the headers are like the ones you show above.

Thanks for the idea Vince, but unfortunatelly it doesn't work in my case.

Could you specify why so we could better provide an answer?

Your method works, but it organises all the shapekeys alphabetically and I don't want it. I want them to be organised like ones pictured above (uppercased heading showing the name of the body part, and its modification names below).

Yes, it works that way, see edit.

Sorry to revive such an old thread but it's the first thing that pops up in Google when I was looking for where else I uploaded my add-on that does exactly this (and more) so I thought to post this here for whoever else is looking for it:
https://blendermarket.com/products/shape-key-manager/docs
I just updated it so that it's compatible with Blender 2.9


text:
UV Islands. how to distinguish them?
If somebody knows:
when we pick two points on UV image and search for shortest way in 3D, than return selection of shortest path to UV, we have problem, that selected vertices not only from initial island, but also all vertices that share same points in 3D mesh. So, question to deselect other islends that not selected initially...
for f in bm.faces:
  for l in f.loops:
    luv = l[uv_layer]
    if luv.select:
        #???how to remember the island, then to return to it? Direct Link not suitable
        luv.uv = l.vert.co.xy

Isn't this simply how 'uv select sync' currently displays things rather than being a coding issue?
The only way to do this would be to disable 'uv select sync' and change the 'Sticky select mode' to 'Disabled' in the Image Editor header, as shown below:

The disadvantage is that the whole mesh will have to be selected to appear in the uv image editor. I'm not sure if this helps or not because I don't quite understand what you're looking to do, but thought I would add this information in case it does, seeing as you don't have any other answers.

Thanks for the answer. I need to remember one island to work only with him. This should be used in the script.


text:
Bug of the socket output, is not it?
Input and output sockets do not work the same way. The picture seen sockets input and output node "ObjectProps". The socket input button is drawn, while the output socket - no. Who knows the reason? How to make a button in the output socket?


text:
How can I connect several links in the input node?
I need a slot to connect multiple links.
In the API is an attribute of links to the type of collections:
links = self.inputs ['ListAttrs']. links
for link in links:
...
How can I connect several links in the input node?

If your after some example code: https://svn.blender.org/svnroot/bf-extensions/trunk/py/scripts/addons/io_scene_fbx/cycles_shader_compat.py initialized as node tree, Im using for FBX importer to create node trees.

Links are created using node_tree.links.new:

new(input, output, verify_limits=True)
Add a node link to this node tree
Parameters:

input (NodeSocket, (never None)) – The input socket
output (NodeSocket, (never None)) – The output socket
verify_limits (boolean, (optional)) – Verify Limits, Remove existing links if connection limit is exceeded

Returns: New node link

Return type: NodeLink


text:
How to get a gridlines of pixel
I have a Minecraft character.
I will wish to work the pixels of my character.
How to get the selection of these pixels ?
As you see, I have the selection of the judgments of characters only.

Here's what I will wish to obtain:

Pleaze ? u_u"
I want to continue

Il fallait juste appuyer sur la touche "W" -> Subivise =P
Thank you -_-


text:
Creating Dynamic Blender Properties
How do you generate Blender Properties dynamically, and assign them on the fly?
Generating properties dynamically is inherently useful when parsing semi-structured data from an external source such as in an XML or JSON document, but there's isn't really a straightforward way to accomplish this.

see related here: https://blenderartists.org/forum/archive/index.php/t-266184.html
To solve this we're going to make use of blender's bpy.utils.register_class() method and the type() method.
First, we need a method to generate our dynamic properties. In this case, you can use a decorator function to make things a bit easier:
def dynamic(func):
    """
    @:keyword: dynamic - Function Generator that creates properties for Blender data types on the fly
    :param func: Function to generate
    :return: dynamic_property(): returns decorated function
    """
    def dynamic_property(*args, **kwargs):
        """

        :param args: first argument is always *prop_dict (from func in outer scope)
        :parameter *prop_dict: One Blender Property Mapped to a dict: e.g. prop_dict = {'mapname': bpy.props.StringProperty(default="some_path_to_map")}
        :param kwargs: specific keywords needed by enclosed methods
        :return: Pointer to newly registered/assigned property
        """
        Prop = type(str("Parameters"), (bpy.types.PropertyGroup,), func(*args))
        bpy.utils.register_class(Prop)
        PropPointer = bpy.props.PointerProperty(name=func(kwargs.get('param_type')), type=Prop)
        setattr(func(kwargs.get('blender_type')), func(kwargs.get('param_type')), PropPointer)
        return PropPointer
    return dynamic_property

This decorated function generates a function that returns a pointer to a new class instance called Prop, which subclasses bpy.types.PropertyGroup. func(*args) is always a 1 item dictionary. (Further details on the dict contents below)
I also found it useful to create a class to hold the variables I need to pass to the decorated function. (To extend functionality, just create a subclass and override the blender_type variable with whatever type you need + any other variables needed for your implementation)
from bpy.types import Material

    class BlenderProperty(object):
    def __init__(self, **kwargs):
        self.name = kwargs.setdefault("name", None)
        self.prop_dict = {}
        self.blender_type = Material
        self.param_type = "TestParameters"
        self._prop = None

    @property
    def prop(self):
        prop_ptr = self.create_property(self.prop_dict, blender_type=self.blender_type, param_type= self.param_type)
        self._prop = prop_ptr
        return self._prop

    @staticmethod
    @dynamic
    def create_property(prop_dict, **kwargs):
        return prop_dict

For testing purposes, let's use a fake dictionary and fill it with some stuff. Then assign this dictionary to a BlenderProperty.prop_dict
fake_dict = {}
prop_list = ['Prop1', 'prop2', 'prop3']
for prop in prop_list:
    fake_dict[prop] = {'mapname': bpy.props.StringProperty(default="some_path_to_map")}
    new_blender_prop = BlenderProperty(name=str(prop))
    new_blender_prop.prop_dict = fake_dict
print(new_blender_prop.prop)

Calling new_blender_prop.prop calls the decorated getter function for this class's private variable prop, which just so happens to be a pointer to the dynamically created property inside of blender.

Im kinda confused, I understand how this works.. but could you explain how I could add a property to the bpy.types.Object class ?


text:
How to create Custom Multiple Image Import Script in Node Tree
I want to create a script that reads multiple image files and creates image texture nodes for them in Cycles default ShaderNodeTree.
This script will be housed in it's own NodeTreeCategory called "Import".
The script is exactly like the NodeWrangler addon's Multiple Images import function. In NodeWrangler, executing this program opens up the File Browser, allows the user to select multiple images, and reads/imports them as texture nodes into the Active Node Tree.
Here is the working code:
#NOTE: Run this code first then use SHIFT-A, below, to add Custom Float node type.

import bpy
from bpy.types import NodeTree, Node, NodeSocket
import bpy, blf, bgl
from bpy.types import Operator, Panel, Menu
from bpy.props import FloatProperty, EnumProperty, BoolProperty, IntProperty, StringProperty, FloatVectorProperty, CollectionProperty
from bpy_extras.io_utils import ImportHelper
from mathutils import Vector
from math import cos, sin, pi, hypot
from os import path
from glob import glob
from copy import copy

# Implementation of custom nodes from Python
# Derived from the NodeTree base type, similar to Menu, Operator, Panel, etc.
class MyCustomTree(NodeTree):
    bl_idname = 'CustomTreeType'
    bl_label = 'Custom Node Tree'

# Defines a poll function to enable filtering for various node tree types.
class MyCustomTreeNode :
    @classmethod
    def poll(cls, ntree):
        b = False
        # Make your node appear in different node trees by adding their bl_idname type here.
        if ntree.bl_idname == 'ShaderNodeTree': b = True
        return b

# Derived from the Node base type.
class MyCustomNode(Node, MyCustomTreeNode):
    '''A custom node'''
    bl_idname = 'CustomNodeType'
    bl_label = 'Custom Float'
    bl_icon = 'INFO'

    def update_value(self, context):
        self.outputs["Float"].default_value = self.some_value
        self.update ()

    some_value = bpy.props.FloatProperty(default=0.0, update = update_value)

    def init(self, context):
        self.outputs.new('NodeSocketFloat', "Float")
        self.outputs["Float"].default_value = self.some_value

    def update(self):
        #Review linked outputs.
        try:
            out = self.outputs["Float"]
            can_continue = True
        except:
            can_continue = False
        if can_continue:
            if out.is_linked:
                # I am an ouput node that is linked, try to update my link.
                for o in out.links:
                    if o.is_valid:
                        o.to_socket.node.inputs[o.to_socket.name].default_value = self.outputs["Float"].default_value   #self.some_value

    # Additional buttons displayed on the node.
    def draw_buttons(self, context, layout):
        layout.prop(self, "some_value",text = '')

    # Optional: custom label
    # Explicit user label overrides this, but here we can define a label dynamically.
    def draw_label(self):
        return "My Float"

### Node Categories ###
import nodeitems_utils
from nodeitems_utils import NodeCategory, NodeItem

# our own base class with an appropriate poll function,
# so the categories only show up in our target tree type
class MyNodeCategory(NodeCategory):
    @classmethod
    def poll(cls, context):
        b = False
        # Make your node appear in different node trees by adding their bl_idname type here.
        if context.space_data.tree_type == 'ShaderNodeTree': b = True
        return b

# all categories in a list
node_categories = [
    # identifier, label, items list
    MyNodeCategory("SOMENODES", "Import", items=[
        NodeItem("CustomNodeType"),
        ]),
    ]

def register():
    bpy.utils.register_class(MyCustomNode)
    nodeitems_utils.register_node_categories("CUSTOM_NODES", node_categories)

def unregister():
    nodeitems_utils.unregister_node_categories("CUSTOM_NODES")
    bpy.utils.unregister_class(MyCustomNode)

def pre_frame_change(scene):
    if scene.render.engine == 'CYCLES':
        # Scan materials to see if I have a custom node within any of the trees.
        for m in bpy.data.materials:
            if m.node_tree != None:
                for n in m.node_tree.nodes:
                    if n.bl_idname == 'CustomNodeType':
                        print(n.bl_idname)
                        # One of our custom nodes, let's update it.
                        # When we set the value that will trigger an update inside the node.
                        # Even if we change it to the same value it was.
                        v = n.some_value
                        n.some_value = v

if __name__ == "__main__":
    register()
    bpy.app.handlers.frame_change_pre.append(pre_frame_change)

The part I want to modify is the MyCustomNode class. I plan on creating a class that looks like this:
class NWAddMultipleImages(Operator, ImportHelper):
    """Add multiple images at once"""
    bl_idname = 'node.nw_add_multiple_images'
    bl_label = 'Open Selected Images'
    bl_options = {'REGISTER', 'UNDO'}
    directory = StringProperty(subtype="DIR_PATH")
    files = CollectionProperty(type=bpy.types.OperatorFileListElement, options={'HIDDEN', 'SKIP_SAVE'})

    def execute(self, context):
        nodes, links = get_nodes_links(context)
        nodes_list = [node for node in nodes]
        if nodes_list:
            nodes_list.sort(key=lambda k: k.location.x)
            xloc = nodes_list[0].location.x - 220  # place new nodes at far left
            yloc = 0
            for node in nodes:
                node.select = False
                yloc += node_mid_pt(node, 'y')
            yloc = yloc/len(nodes)
        else:
            xloc = 0
            yloc = 0

        if context.space_data.node_tree.type == 'SHADER':
            node_type = "ShaderNodeTexImage"
        elif context.space_data.node_tree.type == 'COMPOSITING':
            node_type = "CompositorNodeImage"
        else:
            self.report({'ERROR'}, "Unsupported Node Tree type!")
            return {'CANCELLED'}

        new_nodes = []
        for f in self.files:
            fname = f.name

            node = nodes.new(node_type)
            new_nodes.append(node)
            node.label = fname
            node.hide = True
            node.width_hidden = 100
            node.location.x = xloc
            node.location.y = yloc
            yloc -= 40

            img = bpy.data.images.load(self.directory+fname)
            node.image = img

        # shift new nodes up to center of tree
        list_size = new_nodes[0].location.y - new_nodes[-1].location.y
        for node in new_nodes:
            node.select = True
            node.location.y += (list_size/2)
        return {'FINISHED'}

How do I create this class so that it shows up in the Import NodeCategory of the ShaderNodeTree?

I think you may be a bit confused here. You appear to be creating existing nodes within the cycles shader node tree. You don't use custom nodes to add a menu item that creates existing nodes to a cycles material. Custom nodes are to create entirely new nodes that are only used in their own nodetree structure, like animation nodes or sverchok.

You're correct. However with the custom node it doesn't seem to work in the node category correctly

Script now works correctly with this code:
import bpy
from bpy.types import NodeTree, Node, NodeSocket
import bpy, blf, bgl
from bpy.types import Operator, Panel, Menu
from bpy.props import FloatProperty, EnumProperty, BoolProperty, IntProperty, StringProperty, FloatVectorProperty, CollectionProperty
from bpy_extras.io_utils import ImportHelper
from mathutils import Vector
from math import cos, sin, pi, hypot
from os import path
from glob import glob
from copy import copy

def node_mid_pt(node, axis):
    if axis == 'x':
        d = node.location.x + (node.dimensions.x / 2)
    elif axis == 'y':
        d = node.location.y - (node.dimensions.y / 2)
    else:
        d = 0
    return d

def get_nodes_links(context):
    space = context.space_data
    tree = space.node_tree
    nodes = tree.nodes
    links = tree.links
    active = nodes.active
    context_active = context.active_node
    # check if we are working on regular node tree or node group is currently edited.
    # if group is edited - active node of space_tree is the group
    # if context.active_node != space active node - it means that the group is being edited.
    # in such case we set "nodes" to be nodes of this group, "links" to be links of this group
    # if context.active_node == space.active_node it means that we are not currently editing group
    is_main_tree = True
    if active:
        is_main_tree = context_active == active
    if not is_main_tree:  # if group is currently edited
        tree = active.node_tree
        nodes = tree.nodes
        links = tree.links

    return nodes, links

# Implementation of custom nodes from Python
# Derived from the NodeTree base type, similar to Menu, Operator, Panel, etc.
class MyCustomTree(NodeTree):
    bl_idname = "CustomTreeType"
    bl_label = "Custom Node Tree"
    bl_icon = "NODE"

# Defines a poll function to enable filtering for various node tree types.
class MyCustomTreeNode:
    @classmethod
    def poll(cls, ntree):
        b = False
        # Make your node appear in different node trees by adding their bl_idname type here.
        if ntree.bl_idname == 'ShaderNodeTree': b = True
        return b

# Derived from the Node base type.
class MyCustomNode(Node, MyCustomTreeNode):
    '''A custom node'''
    bl_idname = 'CustomNodeType'
    bl_label = 'Import PBR Textures'
    bl_icon = 'NODETREE'

    # Additional buttons displayed on the node.
    def draw_buttons(self, context, layout):
        layout.operator("node.nw_add_multiple_images", text="Select Images")

    # Optional: custom label
    # Explicit user label overrides this, but here we can define a label dynamically.
    def draw_label(self):
        return "Test Float"

class NWAddMultipleImages(Operator, ImportHelper):
    """Add multiple images at once"""
    bl_idname = "node.nw_add_multiple_images"
    bl_icon = 'NODETREE'
    bl_label = 'Open Selected Images'
    bl_options = {'REGISTER', 'UNDO'}
    directory = StringProperty(subtype="DIR_PATH")
    files = CollectionProperty(type=bpy.types.OperatorFileListElement, options={'HIDDEN', 'SKIP_SAVE'})

    def execute(self, context):
        nodes, links = get_nodes_links(context)
        nodes_list = [node for node in nodes]
        if nodes_list:
            nodes_list.sort(key=lambda k: k.location.x)
            xloc = nodes_list[0].location.x - 220  # place new nodes at far left
            yloc = 0
            for node in nodes:
                node.select = False
                yloc += node_mid_pt(node, 'y')
            yloc = yloc/len(nodes)
        else:
            xloc = 0
            yloc = 0

        if context.space_data.node_tree.type == 'SHADER':
            node_type = "ShaderNodeTexImage"
        elif context.space_data.node_tree.type == 'COMPOSITING':
            node_type = "CompositorNodeImage"
        else:
            self.report({'ERROR'}, "Unsupported Node Tree type!")
            return {'CANCELLED'}

        new_nodes = []
        for f in self.files:
            fname = f.name

            node = nodes.new(node_type)
            new_nodes.append(node)
            node.label = fname
            node.hide = True
            node.width_hidden = 100
            node.location.x = xloc
            node.location.y = yloc
            yloc -= 40

            img = bpy.data.images.load(self.directory+fname)
            node.image = img

        # shift new nodes up to center of tree
        list_size = new_nodes[0].location.y - new_nodes[-1].location.y
        for node in new_nodes:
            node.select = True
            node.location.y += (list_size/2)
        return {'FINISHED'}

### Node Categories ###
import nodeitems_utils
from nodeitems_utils import NodeCategory, NodeItem

# our own base class with an appropriate poll function,
# so the categories only show up in our target tree type
class MyNodeCategory(NodeCategory):
    @classmethod
    def poll(cls, context):
        b = False
        # Make your node appear in different node trees by adding their bl_idname type here.
        if context.space_data.tree_type == 'ShaderNodeTree': b = True
        return b

# all categories in a list
node_categories = [
    # identifier, label, items list
    MyNodeCategory("SOMENODES", "Import", items=[
        NodeItem("CustomNodeType"),
        #NodeItem("node.nw_add_multiple_images"),
        ]),
    ]

#def multipleimages_menu_func(self, context):
    #col = self.layout.column(align=True)
    #col.operator(NWAddMultipleImages.bl_idname, text="Import PBR")
    #col.separator()

def register():
    bpy.utils.register_class(MyCustomNode)
    nodeitems_utils.register_node_categories("CUSTOM_NODES", node_categories)

    #bpy.types.NODE_MT_category_SH_NEW_TEXTURE.prepend(multipleimages_menu_func)
    #bpy.types.NODE_PT_category_SH_NEW_TEXTURE.prepend(multipleimages_menu_func)
    #bpy.types.NODE_MT_category_CMP_INPUT.prepend(multipleimages_menu_func)
    #bpy.types.NODE_PT_category_CMP_INPUT.prepend(multipleimages_menu_func)

    bpy.utils.register_module(__name__)

def unregister():
    nodeitems_utils.unregister_node_categories("CUSTOM_NODES")
    bpy.utils.unregister_class(MyCustomNode)

    #bpy.types.NODE_MT_category_SH_NEW_TEXTURE.remove(multipleimages_menu_func)
    #bpy.types.NODE_PT_category_SH_NEW_TEXTURE.remove(multipleimages_menu_func)
    #bpy.types.NODE_MT_category_CMP_INPUT.remove(multipleimages_menu_func)
    #bpy.types.NODE_PT_category_CMP_INPUT.remove(multipleimages_menu_func)

    bpy.utils.unregister_module(__name__)

def pre_frame_change(scene):
    if scene.render.engine == 'CYCLES':
        # Scan materials to see if I have a custom node within any of the trees.
        for m in bpy.data.materials:
            if m.node_tree != None:
                for n in m.node_tree.nodes:
                    if n.bl_idname == 'CustomNodeType':
                        print(n.bl_idname)
                        # One of our custom nodes, let's update it.
                        # When we set the value that will trigger an update inside the node.
                        # Even if we change it to the same value it was.
                        v = n.some_value
                        n.some_value = v

if __name__ == "__main__":
    register()
    bpy.app.handlers.frame_change_pre.append(pre_frame_change)