text:
Unwrap UV map proportionally to object size
Is there any way to automatically unwrap UV map proportionally to object or "world" size?
For example:
I've made two cubes, one is two times bigger than other (scale is applied). Then I unwrapped texture with Smart UV project which will try to span all faces on whole texture space(0 to 1) so bricks on left cube will be bigger than bricks on right cube.

But what I want to achieve is this:

In broader context:
When I import model from Archicad (in form of OBJ) all objects have UV's in some scale (so all bricks have the same size on every imported object). And when I want to create custom object in scene I have to manually scale UV's to adjust bricks size for every new object (instead of scaling to one constant parameter).

This could be done easily-ish with Python if scale was not applied.

The Magic UV addon (available here) can be used to accomplish this.
To install the Magic UV addon:

If you're using a version of Blender before 2.79 (the addon is included by default in later versions): place the uv_magic_uv folder in the Blender/(version number)/scripts/addons folder.
In Blender, go to File > User Preferences > Add-ons.
Scroll down the list and enable "UV: Magic UV".

Use:

For a given texture intended to be X units by X units in size, make a reference square (e.g., the side of cube) of those dimensions.
Switch to the UV Editing screen layout.
UV map the square such that it occupies the entire UV area (no margin).
With the square selected, press U and select World Scale UV > Measure.
To apply the same scaling to other faces, select them, press U, and select World Scale UV > Apply.

A video demonstrating Magic UV's World Scale UV functionality is available here (recorded by Nutti, the creator of the addon).

As far as I know new Textools also can do that ("Get Density"): http://renderhjs.net/textools/blender/

@Yodus TexTools looks pretty impressive! Thanks for the heads-up.

The addon is bundled with blender as of blender 2.79, which means the first step "Place uv_magic_uv folder..." is no longer required.

@AdrianLeonhard Thanks for the heads-up! I've edited my answer to reflect this.

UV-mapping defines a vertex on the model to a corresponding point on an image. When you have an image fit to a single face, then you make the model bigger the same vertex still maps to the same point on the image.
Using the same material for two objects with uv coordinates you get the size variation, unless you unwrap each object and adjust the uv's to match the texture size to it.

If we change that to object coordinates the image size remains constant between models, you may also want to set the projection from flat to box.

In Blender Internal you have the same settings under mapping -

In cycles you can add a mapping node after the texture coordinates to adjust the size and position of the texture, while BI has the scale and offset right next to the coordinate mapping setting.

congrats to 10k!

thanks, I thought there would be more people with a higher rep

I totally agree that this is the way to go even if you are baking things.  You may as well use the Cycles node system and bake using an Emission Shader also with low anti-aliasing samples to keep it fast even when baking to high resolution images.

For those who's wondering that their mesh isnt right adjusted, U need to click on ur mesh that u just resized and Ctrl + A and apply whatever u whant, in my case I like to apply scale and rotation at once.

You can try using the UV project modifier which will give you consistent islands sizes for the entire object and then when everything is finished, you can apply the modifier and it will hard-code the UV's so they can be exported.
There is a video posted by CGMasters that goes deeper into the setup. Here's a link to one of their free pages that has some UV mapping info.  http://www.cgmasters.net/free-blender-3d-tutorials/page/2/
You add 6 empties and rotate them into the proper direction so they face the various axis'.  You then you list them in the modifier to achieve the proper projection.
This is what it ends up looking like.

I big problem I foresee here is that once you apply the modifier, the UV's are a bit all over the place and overlapping.  Whether this will be a problem or not depends on what you are doing with all this after the modeling/texturing is finished.

If you are baking global illumination, ambient occlusion, etc, You can add a second set of UV's then press Ctrl-P to re-pack them to fit the 0-1 space evenly.
Then you can add a material with the first set of UV's and textures then bake them all to the second set of UV's and now everything should be in proportion with UV's that are packed nicely for other types of baked textures.
EDIT:  the .blend file is late, (there was an error) :) http://www.pasteall.org/blend/33715
If you select all the Empties and scale them; the texture scale will contract or expand as well.
An interesting note about this modifier is that you can add 10 projectors per modifer so adding two modifiers should be 20 points of reference.  Maybe the nulls could be used to define a large scale terrain pattern through the space.

The best choice for this kind of situation I think would be - Press "U" and then "Project from view". And then adjust the mapping as you wish. It would be handy if you merge all the objects so that you can control the mapping on all of them at the same time.
Here are two different sized planes -

Note to those who try this: on more complex objects, this is a nightmare to use because for consistency this needs to be used in orthographic projection and it means every single face needs to be adjusted.


text:
Why I don't have motion blur in hair? (Cycles)
I have no motion blur in a character's hair, but I have it in the base mesh. As you can see in the image below, the base mesh is blurred but the hair of the character is not blurred at all. It looks static.

I know there's a render time limitation for this, but in this case there's no motion blur at all. Is deactivated or something?
I'm using Blender 2.76 and nothing special with the hair, in this case is not even combed. The blurring method is Deformation motion blur.

try adding some more detail about the hair setup, and the blurring method and settings used... blender version...

You're totally right. I've edited but there's nothing important to add besides Blender's version.

I mean: I tried this simple test (and it seems to work here, 2.76): default cube, added particle system with type: "hair" (anything else default), enabled "motion blur", (default shutter, 0.5)... or can you share a file (see blend-exchange: http://blend-exchange.giantcowfilms.com/)

it should be possible since 2.71, afaik
http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.71/Cycles

Yeah, I did that test too. But you need to add an armature 'cos this problem appears with deformation motion Blur. I did a new hair system for this character and everything works fine but, somehow, it brokes at some point. I need to test a little bit more to find out where the problem is.

source: Stack Exchange

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

sort: votes


text:
How to see Cycle's material transparency in 3D View
I have two planes with the same node setup, but only one of them is transparent in Material Viewport Shading.

The one that works was created by the Import Images as Planes addon. The other plane was created manually and copying the addon's material setup into a new material.
If I set the addon's material to the "bad" plane it works, so the problem is related to the material itself (nor the object, OPGL or my hardware). I'm working on 2.73.
I have no clue about this behavior, here is the .blend for checking it out.

I'm going to work in some camera mapping videos soon and having this working is mandatory for checking the camera animation in real time. Importing Image as Planes is not a solution, I need to be able to set up the material myself for every meshes which are going to have the projection.

@stacker It's weird. I'm on 2.73 too... Just checked on two other PC's. One is AMD but both are NVIDIA.

sorry I misread the question, I thought viewport shading set to rendered.

I meant AMD CPU! :P

@cegaton So may I report as a bug?

Version 2.76 and after:
See TimCollinsMedia's answer
Prior to version 2.76:
This is highly illogical and probably should not effect the display at all, but the setting that makes those two differ is "Alpha blend" in Blender game engine material settings.
Change the rendering engine to "Blender Game", and change this setting from "opaque" to "Alpha blend" in the material settings, then change back to cycles.

but he says its cycles

@Shaiq This is in the viewport (OpenGL), and I guess some obscure OpenGL settings are affecting the way it draws. hjaarnio Nice detective work, +1 :). Perhaps this will be fixed with the upcoming OpenGL overhaul.

Is it possible to #tag users here since this is likely the guy who will be repairing this issue.  http://blender.stackexchange.com/users/465/psy-fi

I guess I should have tried it before asking #psy-fi
Let's see if it summons him.

The other answer works without having to change the render engine. Probably been updated since this post is 2 years old at this point.

You are correct, this was fixed in 2.76 https://developer.blender.org/T45789, updated the answer

I think I've figured this issue out. I'm in Blender Cycles.
To see the transparency, make sure you're in the "Material" view in your viewport.

With your image-plane selected, go to the Material tab.

Toggle down "Settings" at the very bottom. Make sure "Viewport Alpha:" is set to something other than "Opaque". I find "Alpha Clip" and "Alpha Blend" worked well for the .png image I was using.

Hopefully this answers your question.

This answer is quite right and it's actually the method I use. Though, at the moment of my question, @hjaarnio 's answer was the correct one. I don't know if I must change the question itself to specify that it is a query concerning to 2.73 version.

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


text:
Is it posible to hook the tilt of a curve's point?
You can hook the points of a Curve as well as the bezier points. Unfortunately, the tilt of the point is not parented with the hook.
I would like to rotate the hook and have the same behavior that using Ctrl T in Edit Mode.
Is there a way to do it? Or even a workaround?

I don't understand what you are meaning exactly. Could you add more info in the question and maybe show a screenshot of what you want?

A possible solution is using drivers to achieve this. It has a limitation though. Essentially, in Edit Mode I was adding a Driver to the Tilt value of the handle which receives a hook modifier currently:

Drivers allow you to control a property by another one, either with simple mathematical equations like in this example, or with complex formulas. The magenta background tells you that a driver has been added, but so far it's not doing anything. Now, go to the Graph Editor, and switch it from F-Curve to Drivers. Click the Drivers tab, and set the following values:

type: Sum Values (accidentally Maximum Values in my screenshot, apologies)
object: name of your empty which acts as the hook
type: X-Rotation
Space Transform Space

What this means is, when you rotate your empty around the X-axis, the Tilt value of the curve will be rotated by the same amount.

The limitation is the alignment of the handles. While it works perfectly fine in one case, it can behave strange in the other. The reason for this becomes more clear in this Top View:

While the X-Axis of my Start Empty is nicely aligned with the curve handle, the End one is off. If you align them neatly with your curve handles before using them as a hook, making sure the X-Axis always points along the handle, or if you set everything up with a totally straight curve, this should work just fine.
I did that in this Blend:

Edit
Something was going wrong when setting up the drivers in the last Blend, the Tilt values were screwed up. Might have been a little glitch of RC 2.78. Anyways, I re-created the setup in Blender 2.77a. Here is a corrected version:

Thanks. There's something weird, though. As you can see in this image (http://pasteall.org/pic/show.php?id=107293) while the driver's value is 0, the tilt value isn't. Any idea why is this? I'm doing a bandage rig so the tilt is crucial.

@AntonioBuch Not sure what happened, I did that setup on a development version of 2.78 yesterday. I've repeated the exact same steps today in 2.77a and it works. Check the new Blend file provided please.

Now it works fine. I did notice that you worked with 2.78 but it was wrong when I opened it in 2.78 too. Thanks!

EDIT: Aliasguru beat me to it, with a more detailed explanation on the drivers properties.
Connect the Hook object's X rotation to the Tilt property with a driver. The other two rotations are transfered with the Hook Modifier.
The result will look like this.

Step By Step Instructions

For my example I hooked up the center of three bezier control points to an Empty.
Make sure the empty's rotation order has the x rotation at the first position, which leaves XYZ and XZY.

Select the hooked up vertice and add driver to the Tilt property, by right-clicking on it, then selecting Add Driver.

In the drivers panel, set the Expression field to your variable name, in my case var. Then set up your variables input to: Ob/Bone: EmptyType: X RotationSpace: Transform Space


text:
Fluid Domain disappears in cycles viewport render
I'm experiencing this weird behavior with a fluid domain.

It looks like something is occluding the object whilst there's nothing else in the scene.
Even if I apply the FluidSim modifier, I still having this issue. Here you have a Blend file to see it for yourself.

In addition, I've uploaded the original blend file plus the last 10 frames of the cached simulation. Anyway, you could make your own cache:
https://www.dropbox.com/sh/a3wplh6bo8iiz4n/AADafjpXM95iDiWZtLoGWRSqa?dl=0
EDIT: I've experienced this again even with a brand new simulation made in official Blender 2.79.

It would be more helpful to see the blend version before you applied the fluid, but clearly, there's a bounding box around it acting like an invisibility cloak.  I'm wondering if it corresponds to a bound that you place on fluid before conversion.

@cegaton - Weird...  I'm still seeing the problem even without loading the UI.

It renders fine, just previews wrong

Hi there! Thanks for your attention to my question. I've added the simulation file with some cached frames. I hope you'll find the cause of this error.

@AntonioBuch - the second file you provided is very different from the first.  I have applied the fluid in the "Fluid Domain" and I'm not seeing any clipping/bounding issues whatsoever.  Are you still seeing the issue?

I still do. I've tried with 2.79 RC1 too and the result is the same.

Solution - to bring Fluid Domain whole visible in a viewport:

under Render Properties > Performance > Dynamic BVH change to Static BVH

or under Object Data Properties > Normals enable Auto Smooth

I don't have an explanation for that, very precise pixel based cut looks like some kind of clipping, but I don't see any type active. Also I was thinking about some flipped normals that caused something similar to me once (that's why auto-smooth probably worked here), but since the cliping is straight, it can't be a faces of fluid sim rather than something that cross it, but there is nothing like that ... :) Did you used FlipFluid add-on for that?
So, mystery wasn't explained yet :) But probably future generations will find some useful string of meanings from my notes, that brings a light into this dark old 2.79x ... :)
Anyway I don't have this issue in 2.8x

Thanks for your answer! Anyway, that old file was made with 2.7x, internal fluid simulator and now we have 2.8, Mantaflow and FLIP Fluids.  But I do have the same issue in 2.82 with my original file and your Auto Smooth solution works, so maybe it's useful for someone in the future.

After I wrote answer I noticed how old your Q is :) Community boot brigs it up. I didn't noticed that, but your answer surprised me even more :) so thanks for comment, BTW if you can reproduce it with a new file definitely  try to post as a bug, but if its stick only with one specific file, no chance someone will care. I'm still curious what can cause something like this.

I have a similar issue but instead the fluid would disappear only from certain angles (although it seems like maybe yours also becomes visible when viewed from the top), as if there was an invisible clipping box, without top and bottom faces, around it. I had to apply the fluid modifier, export the mesh as an OBJ and import it back for the problem to go away.

But you only did a still frame of the simulation, right?

That's correct. It's all I needed. If you need an animation sequence then this won't work.

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


text:
Is it possible to render Annotations made in View Space?
I have some animated annotations made in the 3D Viewport and I cannot render them with viewport render. It looks like the problem is that they were made in View Space.

Is there any way to have them rendered?

Well, it seems that annotations are rendered in viewport render... can you add more information about your context?

As a comment: yes, you can always convert it to Grease Pencil, but it's going to be misplaced (at least if you annotated in View Space) and you cannot edit the thickness of the strokes.

@lemon Well, I didn't tested in a new file... I guess I'll have to edit the post. It looks like View Space annotations won't render. You think I may report this as a bug?

ok, you're right: does not render in view space, it seems... about reporting I don't know, you can do it anyway.

Do you have under the Objects properties-visibility-Show in Render enabled

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


text:
How to convert images from logarithmic space to linear?
Some software have the ability to convert from/to Cineon logarithmic space to linear. It also appears that Blender had a node named log2lin in some point (in 2.4 maybe).
Is there a way, addon or node group that can make the conversion? And the opposite?

There are a near infinite number of logs. Which log? Also, sRGB is a colour space, "log" is not. You would need more information.

You were right, I've improved my question.

If you intend to transform a log encoded image to scene referred linear, you need to be certain of the following characteristics:

The log encoding format of your source footage. There are many different log encoding formats, and to achieve a proper transform, the exact log encoding, with variables, must be known.
The source footage colour primaries. The source is encoded with specific colour primaries that must be known.
The destination colour primaries. These must be known to transform to your reference correctly. Blender's default configuration reference space assumes BT.709 primaries, for example.
The destination transfer characteristics. In the case of default Blender, the reference space in the compositor is scene referred linear.

Once you know these details, the proper transforms can be added to the OpenColorIO configuration, and your data can be transformed correctly.

Excuse me, but I do not understand how to convert the images.

You would need to identify specifically what log encoding format the encoded values are in, as well as what colours the primary lights, or primaries are. That is "What colours do the red, green, and blue intensity values represent?"

Yeah, it's Cineon log. Software like AE or Natron have an effect/node to convert from/to Cineon log.

What are the primaries?

How can I find out what the primaries are? Sorry for the initial question troy_s but I think that my improved question focus only on Cineon log which is a standard format. Your answer only leads to more questions, how can I identify the primaries? How to add the transforms to the OpenColorIO configuration? Could you focus on Cineon or improve your answer to a more step to step one?

Primaries are the colours of the RGB lights. The log encoding is only one half of the question. You need to know both the transfer function and primaries / white point. I can show you how to add the Cineon log transform, but without the other answer it would still be an incorrect transform.


text:
Black reflections with Cycle's Glossy Material
This is a common problem I've found in a few jobs related with ocean. When the camera is close to the surface, looking at the horizon, those black areas appear. Either with a normal texture or not.

It looks there's a problem with ocean's self reflection, but I can't avoid this by adjusting the bounces. Any ideas?
Here is the .blend file. As you can see, the environment is visible only through camera and glossy, and the problem keeps with a blank environment too. The scene is lit with a sun lamp and plain color environment.

I assume you are using an environment texture, so the lighting is even?

Could you post a .blend with the images packed into it?

This is normal behavior, but I am not sure exactly why. The .blend would help a lot

I've just posted the .blend file. The images are not the same, but it wasn't HDR so the results are the same.

I checked most of the common causes (bad environment, normals, bad material setup) and none of these seem to be the problem. I am guessing it's either a bug or the limitation of what Cycles can simulate.

Bad news then... What about avoiding the sea from self-reflecting? I think I tried this once, but I didn't like the result actually. I think that could be an approach.

Can you try subdividing the mesh? I find black reflections on low-poly objects when their normals are "smooth" shaded. Subdividing solves that problems. It's probably related to the termination problem.

I'm afraid that subdiv doesn't fix the problem at all. Also, the black reflections occurred even when there's no normal map.

Try increasing the glossy or transmission bounces under the light paths rollout of the render panel.

It seems real ocean has the same black spots effect. Maybe Cycles works right. though they are not so harsh.

What happens in that image is that on those waves, the water is facing the camera so the Fresnel effect let us to see the sea bottom. They're not black spots, maybe they appear black because the photograph exposition. As I remember this effect happens when the material is only glossy -with no refraction- so it's not the same effect in my opinion.

I'm not completely sure what's causing this, I suspect it is just how Cycles works and is not strictly a bug - similar to the terminator issue.
In order to work around it, we can modify the surface normals slightly in the material:

From the manual:

Incoming
Vector pointing towards the point the shading point is being viewed from.

Thus adding a tiny bit of the Incoming vector will skew the surface normal just enough to hide the artifacts.
Note that changing the surface normal means our reflections will be incorrect - so we need to change it as little as possible, otherwise the reflections of objects and clouds will be noticeably weird.

Your ocean shader's glossy and refraction nodes need a bit roughness (more than 0).

While increasing roughness hides the problem slightly (but not entirely), it really has nothing to do with the cause.

did not find anything better

I think that there is generally a problem about shading of glossy materials with "fake normals".
Even if you smooth an object, this problem is there, but it isn't, if you don't adjust the normals.

The reason your sphere has black edges is because it has not been subdivided.

@10Replies That is not a reason to have the black edges, but yes the sphere is not subdivided as far as it could be, and subdividing it further may appear to fix the problem...you reach a point when you don't want to keep subdividing because the blend gets too complex for your computer.

@pycoder, the black edge effect is much more subtle from a distance, so if you have something with many objects, you really don't need subsurf except up close. Also, the asker said "Subdiv doesn't fix the problem at all."


text:
How to project an image from a Cycle's Sun light
I'm trying to project a caustics texture from a light in Cycles. It works with Point or Spot lights, but I'm trying to emulate the sun projecting caustics underwater, so I need the shadows and light rays to be parallel. Here is an image from the test scene, note that the shadows are not parallel.

And here's the light's material setup:

The question is if there's a way to project from a Sun light. I know that an option is to take the light far, far away (that's why the Light Falloff Node is there, for controlling the strength).

The Wiki states Their position is not taken into account; they are always located outside of the scene, infinitely far away, and will not result in any distance falloff. which leads me to believe that it would not be possible, as there would be no way to map the texture to a source set up like that. The exact reasons you want to use it makes it an impossibility I am afraid.

Short answer:
No.
Long answer:

Their position is not taken into account; they are always located outside of the scene, infinitely far away, and will not result in any distance falloff.

Which leads me to believe that it would not be possible, as there would be no way to map the texture to a source set up like that. The exact reasons you want to use it makes it an impossibility I am afraid.
Alternative answer:
You can project an image from a plane with a simple Transparent BSDF setup between any light and your subject.

And it also works with volumetrics:

Yeah I "figured out" already... Anyway, the only alternative is to project the shadow of a texture with Transparent BSDF, and it works with volumetrics too. I think this might improve the answer, I even have a render to illustrate it.

@AntonioBuch Go ahead and edit my answer, I can clean it up after you add that.


text:
Problems Creating Shapekeys from Armature modifier
I’m currently using the CookieFlexRig character (I’ve linked it below) and I want to be able to add more shapekeys. Ideally I’m hoping to add shapekeys from posing (by going into the modifiers and applying as shapekey). Unfortunately, every time I try doing that, the shapekey doesn’t work (it might be due to the fact that there are two armatures? I’m not sure).
Character blend file link: http://pasteall.org/blend/index.php?id=52939
If someone could please help me figure out how to add additional shapekeys, even if it’s a different solution than using the bones to pose, I would really really appreciate it.
Thank you

Hi! I've checked the file. You're right, it's because the two Armature modifiers. This a very specific so I better edited the post a little.

I've tested and it looks that if you delete the second Armature modifier, it'll work. It might be a better solution, though. But if you can work with that second one, just do that.


text:
Rigid bodies passing through
[Blender 2.73a]
I have a scene, where a helmet is falling on a surface.

It is quite complex: high-poly helmet, every link in chainmail is a separate element and all this stuff are rigid bodies. I want them to act physically correct, that is why so. All modifiers and transformations are applied: objects are clean meshes. I've already done simulation tests with this model earlier (https://www.youtube.com/watch?v=gszj0GUkigI), now I've updated the model and try to make a new simulation, but it fails:

Surface (was a passive body plane first, now an active non-dynamic cube — doesn't matter) first collides, but then chains and helmet pass through it.
I've tried everything — no idea how to fix this.
Here are screenshots of settings:
Helmet:

Chainmail:

Surface:

Scene:

(all objects are real-size, high values of steps and iterations always well helped increase accuracy)
Any ideas, why is this?
UPD
Subdivided surface, increased steps to 1600 and solver iterations to 120. No luck

you can try to add more geometry to your ground. (subdivide it)

this matters? O_o ok, I'll try

can help sometimes

Have you applied the scale to all of the meshes?

Yes. Everything is applied

Have you tried playing with the solver iterations? Also, is the scene physically scaled? that can make a difference?

I'd try making the surface a cube, not a plane, it may help.

It is a cube already. And all is real-size. That is written in the post. I've increased solver iterations to 100, waiting now

Subdivided surface, increased steps to 1600 and solver iterations to 120. No luck. See gif in post UPD

Well, with some tries I've come to understanding, that problem is not in the surface, but in chains. In Blender's physics engine mass is corresponding to durability (sic!). So, realsize chains with a calculated mass near 1g each is too weak and they "break" during collisions. The only working workaround was to scale everything up several times and increase the mass of everything...

Yep, rigid body sims usually need to be scaled up quite a bit for the calculations to not wack up on small objects.  Sometimes this will make the objects move slower (I am not talking about lag), if this happens just increase the overall sim speed, check out Andrew Price's rigid body tutorial.


text:
Modify a single plane mesh to match image based on alphas, create shape keys
My goal is to create the shapes of continents as they drifted from Gondwana to the present day.
My proposed approach follows, but I would welcome alternate approaches or comments on this approach.
I would like to start with a plane, subdivided. I would like to be able to modify the outside shape of the plane to match an alpha: The plane would shape to fit the alpha without eliminating any verts. I'd then create a shape key for the plane in its new shape.
I'd then like to create a new shape for that plane, based on a new alpha. I'd create a new shape key for this new shape.
The goal is to be able to create a series of shape keys on a single mesh, and be able to move between the shapes... like a tweening process between shapes.
EDIT:
The requirement is for continents which both move and change shape.

I have experimented with shape keys quite a bit, but as noted in the comments and answers suggested thus far, it's pretty nightmarish.
I have also tried to use shrinkwrap modifiers to create shapekeys, but the shrinkwrap encloses the shape without fully conforming to it:

I don't actually need Texas as a shape, but it shows the problem with (my understanding and use of) the shrinkwrap modifier.
I have these planes on a sphere. All origins are at 0 0 0 and moving and rotating across the globe is easy... but finding a way to accurately change shapes is hard.  I understand and have used textures with alphas and displacements, but the requirement is for a level of positional accuracy and fidelity to particular dates that is ill suited to textures...  I need more constant shape modification to the continents...

I think making those shape keys on a subdivided plane is gonna be incredibly difficult, because of dealing with all the central points. Unless you plan to have a huge central NGons, in which you'll have trouble texturing it. If these shapes are predominantly bidimensional you may be able to get away with shape keys on curve objects, which is a lot easier to deal with.

My take on this would be to make a  displacement texture  with your continent images, and use an ocean plane to hide the faces not displaced. (the underwater bits).   The displacement modifier can be applied to create shapekeys, or the texture itself animated.  Do you have some sample images?

I think that the new Grease Pencil Branch might be a solution in the future here, as the grease pencil lines can be sculpted and tweened similar to Flash objects from yesteryear.

@Cegaton alerted me to using "Hooks", and that pretty much eliminates the frustrations shapekeys introduce when making modifications to previous shapekey-keyframes. In cases such as yours where you want 3D shapes and accuracy, I'd be going for the Rotoscoping approach. It's a manual and tedious process but you do get super accurate shaping, and it's 3D, not pixels. You can also modify to your heart's content at a later date without anything else changing shape or location. Can show you a demo video (and Blend file) re: it's accuracy, if you're still on this projec

If the animation will be planar (2D) I suggest you to subdivide the continents in a 2D software (Gimp, Krita, Photoshop), make a transparent PNG for each and import every continent as "Image as planes" (it's an addon), without caring the shape of the mesh; then you can set one location "jointed" and - some frames away - the location "drifted".
If it will be 3D, all PNG planes should be subdivided, shrinkwrapped to a sphere and moved with a rotation with pivot point centered in the center of the sphere.

All 3D, and you have described how the meshes are set up. The problem is the need to be able to tween shapes between -- example -- 60 mya and present day. I may only have 5 or 6 references showing continent shapes, but need to make a smooth continental drift/shape change lasting 20 seconds or more. So transitioning between a few images is unsuitable (or at least less than what is desired...) But thanks. I may revisit... But ideally I would like true 3D mesh continents moving across my (spherical) earth mesh, with "real" continental edge movements between known geologic era shapes.

Check the "animall" addon also. It can be useful to your needs.


text:
"Time remap" or slow speed of cloth particles driven by a force
I have a scene with a particle system, which emits a few planes, to which is assign a cloth simulation. A wind point force emitter drives the particles in a swirl. Cool.

The overall action is getting to be what I want with the settings shown or in the file attached.
What I would like, however, is for the speed of motion of the particles to move at something less than the speed they do now... say 15% of present. The amount of vertical offset from the force would be the same, the same swirliness.... just slower... Like if I remapped time for the scene. Since there are other things going on in the scene, I cannot really remap, however.... so I just need to control fairly precisely the speed with which the particles move.
All input welcome.

UPDATE: The solution I accepted below seems to nearly work, or I am understanding it poorly. Here's the jerky motion I am getting... usually, anyway.

Try to export it to cache (alembic or another) and do time remap. Usually, there is an option to bake cache within frame range, so you can test it on couple of seconds to make sure it works and don't waste time on exporting full length motion.

This just has to do with your various caches, I think.  I created new caches for the cloth sim and for the particle system, then deleted the prior caches, then baked everything, and the jitter went away.  For the particle cache I set "Cache Step" to 1, it was previously at 10 and that may have contributed to the issue.

Final:

Overview:
This is pretty easy solution surprisingly. Only thing you need to do is keyframing Cloth > Speed > Multiplier value.

Slow down speed is exaggerated in this example just to be more
  visible. For slowing down by 15% use values 0.75 instead of 0.1.

Steps:

Set frame to 1 and press I hovering mouse cursor over Multiplier value 1 to set keyframe.
Select next frame which should be starting point for slow down, change Multiplier to something like 0.1 (smaller value, slower time) and set keyframe.
Select frame which should be start of the end of slow down and set another 0.1 Multiplier keyframe.
Lastly set a keyframe which will be definite end of the slow down with Multiplier value 1.

If you want so more help, please put it in the comments as I really don't know what else to explain, it's really simple setup.

Edit:
As @risingfall stated in his comment, you will need to add new cache to Particles and set Cache step to 1, than remove previous one and do the same with Cloth (without changing step, as it isn't present).

Edit 2:
It seems that doing this only with Cloth cache is enough. Even in my gif under final you can see that on the timeline sim is baked only at certain frames. Adding and deleting cache for Cloth is fixing this. To be sure, re-add both caches.
I don't know why this is happening, I'm gonna investigate it further, but at a first glance it seems to be bug/corrupted cache.

I did this, and it appears to do exactly as intended. One note: When I created the .1 keyframes and baked all, I initially got a playback in the viewport that was "springy".... The cloth pieces seemed to bounce without moving accurately. I changed the multiplier value manually to a larger number, but did not keyframe it, then played the animation again.... and all was as intended.

See addition above: Trouble getting smooth playback, although it worked once, I thought....

@rcgauer check my edit.

For folks who follow on later, all of Luke;s input was on target... but to sum up the last part: Delete existing caches if you see the jumpiness... I cannot account for it, and it is repeatable (sometimes).... but clearing caches very deliberately fixed it for me... And it did seem to be specific to the cloth sim: Hiding the cloth sim resulted in smooth replay even with the initial cache...

@rcgauer I've tried to reproduce this error in couple of different scenarios and it seems that it's strongly related to Particle Instance modifer. If you make clean Cloth sim with "Time remapping" everything is ok. So it's most likely that Particle Cache is breaking Cloth cache trough Particle Instance modifier. After all, Particles System in Blender is a lot more buggier than this issue...

I agree: I can get things to work with non-particle cloth, so that is how I will go, and thanks for your input. I may post a note on this at the Foundation, too.


text:
Cycles 2.79 Need reflect and refract output
Blender Render allowed reflection and refraction as distinct output nodes for renders:

I am working with an FX firm that is asking for the same sort of output from my Cycles render, plus specularity. So reflections, refractions and spec.
My limited knowledge of ray tracers says not literally possible... but can I give them something comparable?
EDIT: Beginnings of an answer for Cycles with multiple render passes, which is not ideal: https://www.youtube.com/watch?v=2OhybKuHTlM


text:
Yellow selection outline not appearing in solid 3D view
I am sure I broke something: The yellow selection outline appears in the 3D viewport in material and texture modes, but not in solid any more:

... and this is because...?
The behavior persists if I append the object into a new Blender file.
The behavior persists if I replace the existing material with a single diffuse shader node; thanks to @Leander for suggestion, however.
The behavior does not occut if the object's material is assigned to default cube. @Leander

Blender doesn't show the outline for transparent objects in the viewport.
Remove transparency in your material to make the outline visible again.

Thanks... but no transparency on object.

@Leader Behavior exists even with a single plain diffuse node.

@rcgauer I guess sharing your file is necessary then, you could replace your mesh geometry with a cube beforehand.

Behavior does NOT occur if I assign that material to default cube, which is interesting. And highlighting works as intended in Wire, Texture and Material modes. Interesting. @Leander


text:
Is it possible to begin/end parent relationship with animation or keyframe?
I would like to have a parent/child relationship drive a camera pan dolly, but end the parent relationship at a set key frame.
Is it possible to keyframe or in another way animate and control parent/child relations?

This is one of the main purposes of the "child of" constraint. It's a constraint the transforms an object as though it was parented to the specified target. Like all constraints, you can keyframe the influence:

By default it will move the object to the target's location as well. Clicking "set inverse" will add an offset so the constrained object will "start" from its existing location.
Note that you can also select which transform channels the "parent" applies to, which is also not possible with true parenting. You can also have several child of constraints on the same object with different targets, and just animate which is active at a particular time. This is useful for an object that needs to be handed off from one character to another, or picked up off a conveyor belt or something like that.

Ummm.... I believe a "D-oh!" is called for here.... Thanks. And the "handing off" observation is actually what I will be needing, so thank you.


text:
Make swimming boids avoid/flee a predator object
I have a blender cube, emitting sardines. The sardines seek a goal, a curve, to which I have attached a force field.
I have added a sphere... and then I go nuts. Before 2.7, I was able to make the boids avoid a "predator".... but I seem unable to do so now.  The Avoid | Object brain element seems not to be causing my sardines to avoid my sphere... which I have tried both with and without a force itself.
See attached file. I would like the sardines to scatter as the sphere -- or some object or empty or something -- passes through it.  Worse... I have done it before and my older file does not work.
So, I welcome guidance to (current) docs or an answer: what do I need to do to get my boids to avoid the Sphere of Death?

Don't know why, but removing and adding the rules again fixed it in your file.


text:
Wicked mesh deform: Misusing bones, meshes or both?
I have a sea turtle mesh and skins I have created in ZBrush and Blender, and I spent some time in Blender trying to make as nice a mesh as I know how... or at least as I think I know how.
For the head, neck and much of the rest of the critter I get good movement and deformation of the meshes and skins, except in the armpit... when the flippers meet the body. See the images I have attached.

Although that showing the tearing at maximum bone movement, it shows up with almost any movement.
Am I asking individual bones to do too much? Add more bones and reweight? Or should I have built more crenellation into the skin, so there are true folds that can move? And/or have a I missed something even more obvious? The tearing and stretching of the mesh is more than I have seen in other rigs we've done, and leads me to think I am missing something really fundamental about geometry and weightpainting...
Thanks!

can you post a pic of that same view in weight-paint mode, one each for the bones on either side of the point in question?

Just posted a fixed view....

my working hypothesis was that there was too abrupt of a transition between the influence of one bone to the next, but I'm not sure, and further, I can't tell from what you've posted. The mesh looks sufficiently tessellated that such a distortion shouldn't be happening, but that would entirely depend upon the weight painting. In general, I would say that the influences of each of the 3 or 4 small bones in the shoulder area should not have abrupt weight-painted transitions, and that when animating a fin movement, you would be careful to only rotate any one bone by a small amount.

Actually... I threw away everything and recreated, using face masking to assure good delineation of weights.... but that leaves two variables to explain it: better bone alignment to the intended motion of the critter, and more precise weight painting. Face masking rocks.  This is the final one... I did not get a weight view of the faulty one.


text:
Rotate an object but do not rotate its alpha image texture mask
I am making an animated graphic showing oceanic upwelling. Here's what I have so far:

The viewport shows three circular sets of arrows -- each is on a separate mesh and is a PNG with alpha.
The UV Editor shows an alpha mask, also PNG with alpha. The node editor shows my arrow mesh material thus far.
The mask fades the arrows in and out as expected, but when used as I have it connected in the node editor, the alpha mask rotates right along with the arrow image texture... so I do not get the arrows fading in and out. The desired effect is for the arrows to fade in from transparent and appear at the bottom of the rotating wheel, and to disappear by fading out to transparent at the top.
The question: How can I not rotate the alpha mask as the arrow "wheels" rotate?  The arrow meshes rotate on Y, and I am sure there must be an elegant way to counter animate or driver the alpha so it actually stays in place, but I have not found it.
EDIT: And I guess the other way to ask this is: I want a circle of arrows to fade in at about 6 o'clock in rotation and fade out at about 12 o'clock rotation. What's the right way to do this?
EDIT2: Adding a sample file containing the sample mesh, material, arrow PNG and
mask.
EDIT3: Rumen's answer is correct, although it took me a while to figure it out. I have posted a resolution file showing how I did so.

All input welcome.
best
rg

You can add "texture coordinate" and "mapping" node to your image with arrows. And then add keyframes to rotation values in mapping node.

@Rumen Thanks... and I was hoping something like that would work... but the Y rotation (or Z in the test file I just uploaded)  distorts but does not rotate the image... or I guess I am not understanding how to control axis of rotation with the mapping node. Input very much welcome.

Change texture coordinate to "Object". Then Change Extension from "repeat" to "clip". And adjust location and scale like in the image below. Now Z rotation works like you need.

And to get a full 360-degree circle of arrows took a weird alpha arrangement, but this approach works. See resolution file if interested.


text:
Editing particles to remove troublesome boid instances
I have a plane emitter, sending boids toward a target.

By entering Edit mode while the plane is highlighted, and then selecting Particle Edit mode, I can see the particle routes, as hairs:
The specific need is to ID boids who pass through other objects or in places they're not wanted.... and to do so by killing the offending boid without changing the rest of the baked action for the remainder of the boids.

How can I delete a specific boid or route/hair, but allow for the animated action to take place for all of the other boids?
OUTSTANDING assistance. I thank you, as does my mosasaur.

You could place a small object in its path, turn on physics collision and enable kill particles.

Related Using  a "post prod" scripting solution to zero out particles based on some condition.

I don't think you can actually delete the boid or its path but you can move it out of the way so that it isn't visible as part of the simulation.
This can be achieved using the Particle Edit mode after you have Baked your simulation. Note that this must be baked into memory rather than a disk file - since the Particle Edit can only operate on particle systems held in memory.
In Particle select mode, choose the 'Point' select mode to allow you to manipulate all points in the particle system.

You might also find it useful to increase the Draw Path Steps in the Toolshelf (T) to make the visible paths more detail (makes it more smoothed). Also, disable the Keep Root setting so that you can move the whole path without it being joined to the emitter (used below).

Select one of the points on the path you want to 'move'

Then hit L to select 'Linked' - ie, select the whole path.

You can now 'grab' (G) the path and, since it's disconnected from its 'root' (the toolshelf checkbox you unchecked earlier) you can move it away from the emitter.

To make the selected boid even easier to 'hide' you can scale the path to zero to make it occupy a single point with S0Enter.


text:
Color banding in Blender Internal render output
I am preparing to render an animation, and I am experiencing banding colors on a background generated in Blender Internal using a world texture created with a color ramp:

The render generates banding as shown here, highlighted by brown dashed lines:

Earlier versions of the scene used a purer color selection... more in the deep-sea cobalt ranges, and I either did not see banding or there was none...?
Other settings that may be of interest:

Gaussian anti-aliasing on with 16 samples... and I have tried 11 and 8. It is present when no antialiasing is used, as well.
All input welcome!

And, for what it is worth, turning mist off decreases the problem, but does not eliminate it...

I am very appreciative of information found on blendhelp.com... (Has the site died?)
https://www.youtube.com/watch?v=YwrTaXXSZsY
In any case, the solution to my banding involved:
** Select PNG output and 16-bit color depth
** In post-processing, select an appropriate dither amount. I worked between 1 and 2 and seem to get a nice smooth transition.
This explains why I did not see it earlier, as the original color range was probably narrow enough not to generate this banding.
Hope this helps someone in the future!
Please note all input from troy_s below, as these are really helping me dial this in. PNGs did not work as well as Targas, which do not seem to work as well as EXRs.

Better would have been a Half EXR container. PNG is a worthless format that both destroys your scene's data (useful if you are going to grade) and also uses an absolutely junk alpha format. Also, bear in mind that posterization is a byproduct of what is known as perceptual quantization. Changing your transfer curve can reduce or eliminate posterization. The sRGB EOTF is quite awful at quantizing data from scene referred data.

troy_s  I ended up using TGA... I also tried exr, but I am getting good results with targa with a little less file size...  and I am going to mess with curves as soon as I get some frames rendered as a starting point... Thanks or the helpful information.

The problem is that TGA is also display referred, and I suspect that Blender will mangle up the alpha. I'd strongly encourage you to go with Half EXR at the very least. It's quite easy to demonstrate the reasons why if you are at all interested. You can also try the compressed EXRs if disk size is an issue.

will do so! Anxious to see...

To start, you might want to learn about scene referred versus display referred models. Try this post to start http://blender.stackexchange.com/questions/46825/render-with-a-wider-dynamic-range-in-cycles-to-produce-photorealistic-looking-im

Wow... a fantastic resource. I am working thru some exr renders and want to consider how my post-render workflow changes from what we have been doing with frames thus far.... but your link sort of points to an "undiscovered country" for me.... Part of the challenge is just the uncomfortable "differentness" of working with exr on monitors and in processes that had been handling pngs and jpgs.... (and of course your link explains why!). I will also wander thru the GitHub links... Your input is scholarly in the best sense, and very welcome...!

Not entirely scholarly. Discovering how scene referred versus display referred ranges impact your work is a huge mental leap however, and it bears equivalent impact on the work itself. Hopefully you find the impact on the work intriguing if you are using Cycles.

Yes... although even in BI there are instances in which I can see immediate application -- or need for caution. So often in the past, our renders were (giant, enormous, very big high res) single frames for mural work.... so a lot of sins could be covered in post, often just in Photoshop. When we move the assets into motion output, hand modifying 10000 frames seems like less fun and made clear that we need to dial in our workflow.

But we do primarily use Cycles -- this BI need was a throwback, but I forgot how nice some of its features were....

Feel free to drop an email or via http://chat.stackexchange.com/rooms/34814/the-rabbit-hole if you have any questions. It opens up a tremendously different view (literally) on how your work functions, and a massive degree of creativity. The dynamic range in the image makes many things like volumetrics, lens flares, etc. all much more interesting creatively, as well as making HDRI work behave correctly with equal visual energy levels. It is nothing short of an imaging quantum leap, as you will likely discover.


text:
How do I get precise foot placement in animated walk motion?
Controlling a walk cycle's timing and foot placement is one of the many things I do poorly... and I wonder if it is because I am missing or do not understand a Blender control device or approach.
While (I think) I understand FK and IK use, I am using them to get natural-looking motion but not so much to control precisely the resulting placement of feet: where/when the feet land and where they are pointed/rotated. I use empties and paths to move the armature through the scene, but again not knowing how to precisely use this approach to target individual "LeftFooptStep1" or "RightFootStep6" onto precise locations, rotations and frame numbers.
In 3ds, for example, your walk cycle can:
ID footstep placement after first iteration.

Allow editing of footstep orientation.

Allow positional editing and animation to assure placement through cycle

And can even be animated to give slipping and sliding.

And, as it happens, those are all things I need to do on my current project:

Precise placement (position, orientation, time) of footfalls within walk cycles
Undulating surface interactions
Synchronization of two or more characters' walk cycles' footfalls and timing.

EDIT=================
I will accept this answer since it adds considerably to my understanding, and I am sure I am not using it to its fullest yet. That said, it does not do everything I'd LIKE to have, but it certainly seems to do a lot of stuff I need to have.

The wikie suggests that the Floor must be level: "Note that it is only capable of simulating entirely flat planes, even if you use the Vertex Group option. It cannot be used for uneven floors or walls."
I probably do not fully understand what they intend that to mean, since I am able to vary the Z position and have the Floor constraint assist. I have not worked with rotation yet, but have seen tutes suggesting I can get some of what I want.
Thanks!

In short, use the Floor constraint. I'll come up with an elaborate answer when I find time. Don't get confused by the name. The constraint can also be used for walls.

Working on an adaptation to this issue for Floor: "Note that it is only capable of simulating entirely flat planes, even if you use the Vertex Group option. It cannot be used for uneven floors or walls."


text:
mixing video in bge
I have a set of rendered sequences I'd like to mix live in BGE with the same result you would obtain using the cross effect in VSE.
BGE has already the capability to assign custom video texture to materials and I'm aware of Dynamic texture that's shows how to use the API but so far I can't imagine a good way to transition between a video and another. Maybe it's possible with using some way to overlay two planes but I'm lost on what's the best way to tackle this problem
I need to be able to control when this cross fading effect happens because all this will be screened LIVE in a theater and depending on the timing of the actors/orchestra a video sequence may loop or transition to the next video this are the only control I need.
I don't know if this is even possible with the BGE so if you have suggestion for other way to accomplish this they are welcome.
(FreeJ seems unmaintained and snowmix seems to complicated for my needs)
(this branch are for live cameras and won't help afaik)
edit: I just found that playing with z-transparency and two stacked planes makes a similar enough effect but how can I control it inside a BGE script?

I end up using praxis that offers a lot of transitions already built-in and endless possibilities since it integrate Processing

Textures by VideoTextures are used within materials. There is no difference except the texture source is different. That means you can use it like any other material unless it overrides the settings you want to animate.
I suggest to animate the alpha component of the object color according to Fading and Transparency for all Shading modes

The problem with this approach is that you need to know in advance where to place the keyframes to fade out

You do not need to know until it should start. You can play the transition action at any moment you like. It is independent from the texture.

authors: Игорь Назаров


text:
blender crash randomly on animation with link/unlink script
I have a simple script that spawn and delete object from a collection every X number of seconds, triggered on frame_change_pre/frame_change_post registered handler.
The script works fine in the viewport, but when I try to render the animation it crashes randomly, sometimes with a python backtrace pointing to link in the scene, sometimes to the unlink, sometimes with no backtrace at all...
The more max_instance I've put the more easy is to crash it.
I've tried with several version of blender (starting from 3.6.2 to 4.1.0)
I wish I could be more specific, but after two days I've realized that it could appear randomly like it's an unreferencced/unclean memory issue, that I can't pinpoint! (or is a bug)
I've also tried rendering from the script (as you can see from the commented line) but made no difference.
Here a simple demo scene with the script to demonstrate the issue

import bpy
import random, time
import os, csv

def clear_collection(collection_name):
    # Get the collection
    collection = bpy.data.collections.get(collection_name)

    if collection:
        # Unlink and remove each object from the scene and data
        for obj in collection.objects:
            collection.objects.unlink(obj)
            bpy.data.objects.remove(obj)

        # Remove the collection
        bpy.data.collections.remove(collection)
    # Create a new collection
    new_collection = bpy.data.collections.new(collection_name)
    bpy.context.scene.collection.children.link(new_collection)

def render_current_frame(frame_current, instance_num):
    # Set the name for the current frame
    t = str(int(time.time()))
    filename = str(instance_num) + "."+ t
    bpy.context.scene.render.filepath = "//img/" + filename
    #bpy.ops.render.render(write_still=True)

def check_instance_position(collection_name, start_line):
    # Check every instance in the collection to see if it is in the range of start_line and end_line
    collection = bpy.data.collections.get(collection_name)
    visible_instances = 0
    fallen = 0
    sX = start_line.location.x
    sZ = start_line.location.z
    for obj in collection.objects:
        loc = obj.matrix_world.translation
        if loc.x < sX and loc.z >= sZ: # obj is moving toward the start_line and has not follen out
            continue
        elif loc.x >= sX and loc.z >= sZ: # remove the obj past the line
            visible_instances += 1
            collection.objects.unlink(obj)
            bpy.data.objects.remove(obj)
            continue

        elif loc.z < -3: # NOTE: I've to use -3 because when spawn the z value is -2.8/-2.9 so I can't compare with the start_line at 0
            # obj fallen off the convyor belt
            fallen += 1
            collection.objects.unlink(obj)
            bpy.data.objects.remove(obj)
            continue

    return visible_instances, fallen

def create_random_instance(original_collection, emitter_object, target_collection, collision_shape='SPHERE'):
    try:
        collection = bpy.data.collections.get(original_collection)

        # Duplicate a random instance from the original collection
        orig = random.choice(collection.all_objects[:]) #.objects)
        if not orig:
            raise Exception("Error: no object to duplicate")
        duplicate = orig.copy()

        faces = emitter_object.data.polygons[:]
        # Choose a random face to emit the instance from
        random_face = random.choice(faces)
        faces.remove(random_face)
        face_center = emitter_object.matrix_world @ random_face.center
        duplicate.location = face_center
        rnd_scale = random.uniform(0.85, 1.2)
        duplicate.scale = (rnd_scale, rnd_scale, rnd_scale)

        # Link the duplicate to the collection
        bpy.data.collections[target_collection].objects.link(duplicate)
    except Exception as e:
        print(f"Error: duplicate object {e} ")
        return

def frame_change_pre(scene):
    global visible_instance, fallen_instance
    start_line = bpy.data.objects.get(start_line_name)

    visible, fallen = check_instance_position(instance_collection_name, start_line)
    visible_instance += visible
    fallen_instance += fallen
    render_current_frame(scene.frame_current, visible)
    print(f"Visible: {visible_instance}, Fallen: {fallen_instance}, Frame: {scene.frame_current}, Total: {total_instance}")

def frame_change_post(scene):
    global total_instance  # Declare total_instance as a global variable
    emitter = bpy.data.objects.get(emitter_name)

    # Check if x frames have passed
    frame_tot =  num_of_seconds * scene.render.fps
    frame_mod = scene.frame_current % frame_tot
    if scene.frame_current == 2 or frame_mod == 0:
        # Create the instances
        random_times = random.randint(min_instances, max_instances)
        total_instance += random_times
        for _ in range(random_times):
            create_random_instance(source_collection_name, emitter, instance_collection_name)

global total_instance
global visible_instance
global fallen_instance

if __name__ == "__main__":
    source_collection_name = "source"
    instance_collection_name = "instances"
    emitter_name =  "Grid"
    start_line_name = "START_LINE"

    num_of_seconds = 1  # spawn every x seconds
    min_instances = 0
    max_instances = 200  # randomly spawn max num of instances
    total_instance = 0  # tracks the total number of instances spawned
    visible_instance = 0  # tracks the number of instances that are visible
    fallen_instance = 0  # tracks the number of instances that have fallen off the convyor belt

    clear_collection(instance_collection_name)

    # Unregister/register the frame_change_post handler
    bpy.app.handlers.frame_change_post.clear()
    bpy.app.handlers.frame_change_post.append(frame_change_post)

    bpy.app.handlers.frame_change_pre.clear()
    bpy.app.handlers.frame_change_pre.append(frame_change_pre)
```

Hello, could you post the script as text in your question ? Thanks

I get an EXCEPTION_ACCESS_VIOLATION crash, meaning that the underlying code in blender C++ is misbehaving (a bug!), that I would report using Help::ReportBug. Be sure that you are using a blender version with LTS (long term support).  Be sure not only the attach your blend file but also the debug_crash.txt file in USER/AppData/Local/Temp (windows location).

https://projects.blender.org/blender/blender/issues/120795


text:
how do i save my selfmade favorit color ramp gradient in node editor?

i have created some cool favorite color gradients in the node editor.
 i want to save all of these so i can use them again later , also for use in other projects , but where is the save button ?
 on the picture you can see the gradient color , but there is no save button near around it .
how do i do this ?
to be more specific , in one project i want to be able to choose from hundreds of cool gradients that i have created in blender and have saved these , for later use.
so when i work on a project and i don't like a gradient that i have used , i can go to a list where i have saved my selfmade gradients , and just pick out 1 of them , and than check out a next one , until i find one that i like. just about the same idea how you would do with choosing a right jpg for your texture, you have a folder somewhere , where you saved all your favourite jpgs , where you can choose from and check out which one fits best to your object. image now you can only choose from one JPG texture,  or in the worst case you need to hustle around a lot to try to import a second jpg etc etc .  that is how i feel now with the gradient question . there should be a save and load button somewhere to enjoy working with gradients on your object , just like you would enjoy cool JPG textures on your object. it seems no problem to choose from thousands of cool jpgs. just by one click , and keep going searching until you find your best one that fits here on your object.  if i can't save my cool self made gradients , i have no other choice then wait for an update for this , hopefully soon , maybe did i miss here something , but i have seen no option to load and save cool selfmade gradients. anyone ?
this question has been marked as a double, but it is different in my opinion.
Can I make a custom node from a group and have that available in other projects?
that was the other question that has been compared to my question. it is different , because i am not asking for a node combination to save it and use it elsewhere.
my question is how to save a specific part inside the node it self. how to save a favorite selfmade gradient collor ramp. and have these gradients saved in a folder with maybe 50 other different color combinations. that is not the same like how to make a custom node from a group.  because i don't want to make a new node for every color change that i wil make. so there is the difference. so far i only see answer where i can change my gradient when i create new nodes , but this is not gonna be a good solution .  imagine you have to create a new node for every jpg texture that you will import ? i mean in a situation when you scroll through your list ofjpgs and want to test all of them to pick out the best texture. it is easy and quick , with just a click , and the same workaround should be for changing a rollorramp, and go through your list of gradients , where you can choose your favourites to see if it fits your object in your project.  that is not the same thing as creating custom nodes to use in other projects question .
blender has been around for a long time now , it should be there. it is so standard for an app working with gradients.
i am afraid blender is still in the stoneage regards to some specific simple basic functions that should be already updated long time ago .
lets just hope, it will happen someday.
but if i missed something , and someone can point me to an answer i would be happy to hear it .
i am not looking for a complete node combination export , like the other question. and than re-use ,  for each tiny color change that i make,
i need to create a list in a folder next to my jpg texture folders, where i can keep all my favorite gradient colorramp patches and choose them as easy as i choose a new jpg texture.
i guess the answer is No , but it should be yes . anyone agree ?

I do not think it is possible to save custom node settings as of yet, although this could theoretically be implemented in future.

but i can't believe this , such a simple thing like creating hundreds of cool gradients , and no way to save it ?
actually i know how to do this the long way, i found a workaround for myself , i just save this whole project , with that specific cool gradient color combination that i created.
if i need that gradient again i will go to that project and grab it from there.

but come on , you know this is way too much work fo such a simple task , also i don't have a chance to see the exact color when i search for the right fie that i saved long time ago. the blender file doesnt tell you the gradient color that you used , you need to open it and see it.

quickly change textures is cool by replacing them with one button .
same should be for replacing and searching your favorite gradient.
if not possible , lets hope the blender designers see this message and think about it .
for now , i will just keep doing the long way . but it is not right...

i didn't see a save button and i had a bad feeling about it , and was already worried for this ...sorry to hear it is not possible. but it should be !

Depending on how often you want to use your gradients, you can save them in two ways.
Both methods start by grouping your ColorRamp node. After you have set the gradient as you want, select the color ramp node and press CrtlG that will create a node group only containing the color ramp node. Rename the new node group, in the properties region N so you can find the gradient later.

If you use the gradients a lot, just save the node groups in your start up file.
The second method is to have a file of node assets, and when you want a gradient Append the node group from the file, with ShiftF1.


text:
Limited Dissolve leaves unused Vertices
Sometimes In order to get the effect I want I'll subdivide more than I need, then use Limited Dissolve to remove unused areas.
I just noticed that it sometimes (or maybe always?) leaves the separate edges/verts that were there from the original subdivision.
Is there a way to prevent this or clean up verts that do nothing?
Thanks!

Like this?

@gandalf3 I don't think so, the wording there is "delete all vertices connected to one or less edges" but I think my issue would be better described as "one vertex connected to exactly 2 edges that are in alignment". I'll add a picture to the question for clarity.

Ah, nice. Didn't turn up on my limited dissolve searches.Edit: I had tried this manually, but whenever I use "Dissolve Vert" I just get an error, says it couldn't do it. The selection method is handy though.

Hmm, tried that solution on just 2 of the problem verts and it removes the edges too? Updating from 2.7 to latest just in case.

Same thing happens in 2.73a, but if I select the edges that run between 2 different problem verts and use edge dissolve that seems to work. Thanks


text:
After using "Import Images as Planes", texture doesn't show up
After importing an image as a plane, with the corresponding addon, I switch the view shading mode to texture but the object is just white. If I change the view to render I see the image. How can I work in texture mode and see the image?

may you please post a .blend file or at least a screenshot? it kinda difficult to tell exactly what's going on in there. Use a service like pasteall or blend-exchange.

Do you have GLSL shading enabled? I don't think Multitexture handles textures properly. (If I'm right, I'll post an answer for you to accept).

GLSL messes it up, moving from render engine to render engine does not. Notice that GLSL makes it turn black not white.

In the N panel under shading, select Textured Solid. This allows each object to display its texture in object mode. This is not the same as setting the view port rendered.


text:
Armature rig moving random areas of my mesh
I've built a low Polly character and I'm now trying to rig it for animations.
I followed a guide and the guide told me to use auto normalize to prevent the problem I'm having now but it doesn't seem to work, and its nothing to do with the weight painting seen as I've repainted it already thinking this was the problem, but when I rotate the upper arm bone it moves some vertices of the mesh on the hand on the other side this is the same problem with the opposite arm bone as well where it moves some vertices on the opposite hand.
As far as I can tell I cant see the weight painting on the arms showing up any where near the hands.
And if your wondering how I connected the armature and mesh together I selected them and pressed Ctrl +  P and used with automatic weights in case that's important.
As a side note I'm only starting to learn rigging and weight painting but I have been using blender for a while now for modelling .

maybe try to recalculate the normals before parenting, if it still doesn't work please share your file: https://pasteall.org/blend/

ah that was it thankyou so much

Recalculate the normals in Edit mode (ShiftN) and parent again


text:
Cycles OpenCL and Mesa driver support
The Mesa driver from version 20.3 has full OpenCL 1.2 support, but Blender doesn't support GPU rendering using Cycles render. Why?
When can we expect full Mesa driver support?
My GPU is an AMD 5700 XT

TL,DR
OpenCL will no longer be supported going forward, and GPU rendering accelaration under AMD cards is at the moment discouraged.
Full Explanation
OpenCL development is stagnant and the implementation insufficient for a properly working render engine.
There are critical bugs and limitations that wont allow for a proper implementation using the API. Developer support is also limited with no significant new work being developed for a long time.
No further developments are expected at this point, and support will be dropped going forward, as stated in the Blender Code Blog about Cycles X

Deprecation
As part of the new architecture, we are removing some functionality.
Most notably:

OpenCL rendering kernels. The combination of the limited Cycles split kernel implementation, driver bugs, and stalled OpenCL standard
has made maintenance too difficult. We can only make the kinds of
bigger changes we are working on now by starting from a clean slate.
We are working with AMD and Intel to get the new kernels working on their GPUs, possibly using different APIs (such as CYCL, HIP,
Metal, …). This will not necessarily be ready for the first release,
the implementation needs to reach a higher quality bar than what is
there now. Long term, supporting all major GPU hardware vendors
remains an important goal, and we think that with this new
architecture we’ll be able to better performance and something
stability. It is just a matter of time until more GPUs are supported
in Cycles X again.

OpenCL for Cycles will be deprecated for the time being, and as such GPU rendering on AMD Radeon dedicated cards or Ryzen APUs integrated GPUs will no longer be supported. This also means that any current known limitations, bugs and unsupported hardware or features will no longer be improved or worked on.
Further developments are expected possibly using different APIs, but no definitive plans are made at the time of writing
A new API is currently being developed to replace OpenCL named HIP for Windows and Linux only, (no explicit Apple MacOS support at the moment).

HIP is a C++ Runtime API and Kernel Language that allows developers to
create portable applications for AMD and NVIDIA GPUs from single
source code.
Key features include:
HIP is very thin and has little or no performance impact over coding directly in CUDA mode.
HIP allows coding in a single-source C++ programming language including features such as templates, C++11 lambdas, classes,

namespaces, and more.
HIP allows developers to use the "best" development environment and tools on each target platform.
The HIPIFY tools automatically convert source from CUDA to HIP.
Developers can specialize for the platform (CUDA or AMD) to tune for performance or handle tricky cases.
New projects can be developed directly in the portable HIP C++
language and can run on either NVIDIA or AMD platforms. Additionally,
HIP provides porting tools which make it easy to port existing CUDA
codes to the HIP layer, with no loss of performance as compared to the
original CUDA application. HIP is not intended to be a drop-in
replacement for CUDA, and developers should expect to do some manual
coding and performance tuning work to complete the port.

It has been merged into experimental Blender already, but is highly experimental and under heavy development at the moment. It is being actively worked on, but it currently doesn't work under Windows yet due to lack of driver support.
Before even asking where you can download it or how to try it, be aware that it is not ready for end users, not even for testing. It is unstable and untested, and there are no available builds at the moment. Reporting bugs is discouraged since problems are totally expected and at this point, and triaging them only distracts from actual development.


text:
Trying to do the anvil tutorial and while making the horn I do the I for insetting the face and tap b it doesn't work. I keep getting 2 horns .?
How do I stop the anvil producing two horns? I did it once using hot key b during I operation. This time didn't work, is it because I used the tools on the side, also have already applied Boolean would this effect it. Found Boolean wouldn't work if not applied before adding mirror modifier. Tried putting another Boolean in just before extruding horn but didn't help.

Hi :). Your mirror modifier's Clipping is disabled. Also check for inner faces that might've been created up until you checked it.

Thank You I turned on the clipping and left the sub surf modifier off and it worked.


text:
Subsivison broke my texture, how do i solve this
Before subdivison

After subdivison

The subdivison surface broke the assigned texture, how do i make it look like how it was before sub surf while enabling sub surf

try to click on simple instead of catmull clark

Where is the texture you are talking about? I only see a Principled BSDF with no texture node plugged in. Also can you post a picture of how it looks like when it was not "broken"?

maybe you don't need a Subdivision Surface for this kind of object, maybe bevel the angles, shade smooth and enable Auto Smooth?

In this case planes don't need subdivisions.

@mqbakamqbaka I think he has assigned materials to different part of object. the face of table has that material of yellow color and so on. Instead of using subdiv add a bevel modifier. Or the best method apply the subdiv and again select the parts and assign material to that part.


text:
Flickering spot light shadows in GLSL
Two years ago I made a labyrinth game for a class, and it worked perfectly. Now I need to use this game for other reasons, but the lightning is bugged.
I'm using GLSL because that's how I managed to make everything work back then. I'm using a spot light to generate shadows, in lieu of the sun, because a Sun wasn't generating shadows as I wanted. But I'm using a sphere of 20 Suns to simulate global illumination, because other means to do that weren't working back then.
I have a camera overlooking the labyrinth, and the shadows are correct there. I also have a first person camera, and that's where the problem is. I'm failing to put this problem into words, so I made a video:
https://youtu.be/iwVJ0AlqWtU
I've Googled and messed around a bit, but I found no solution. I found out that I could replace my spot light by a Sun, and the shadows even look better, but the bug remains exactly the same.
The necessary files are here:
https://github.com/GuiRitter/labyrinth-game-exercise
Is there a solution to this?
Thanks in advance.
Update:

I tested a bit further. I don't know if it can be seen in the video (terrible job at using OBS Studio), but the ground texture is also bugged, (not) moving like the shadows are. I've deleted all light sources and the problem remains (tested in two scenarios: #1 added Emit in Properties > Material > Shading to the ground texture; #2 added ambient lightning in Properties > World > Environment Lightning (didn't knew of this before or it didn't existed when I had to make that fake ambient lightning))..
I've made a minimal version from scratch (nothing copied from the first one) and the bug remains.
Also didn't work: deleting all cameras, creating a new camera, not scaling it, setting it's physics to No Collision, vertex parenting it to the player character (although that makes the camera not change orientation with the parent), positioning it such that it would not be inside another object. I positioned it above the labyrinth walls and deleted the sky to ensure the last one.

Seeing the same result you have here. You have too many lamps, if different mixed types, with too many needlessly independent object data, with too wide radius, too far from the scene, too big shadowmap sizes, and too far apart clipping ranges. Your scene needs some serious cleanup and optimization. You also seem to have lamps illuminating your scene from under the floor, which seems quite pontless.

@DuarteFarrajotaRamos see the update in the first post.

@GuiRitter i have tested your file and try to fix it but seems  corrupted somehow, so i suggest that try with a new blend.

@Strapicarus I've made a minimal version from scratch (nothing copied from the first one) and the bug remains. I've uploaded it to the link I provided, inside the "minimum" folder.

@GuiRitter I found the problem, please read the answer.

@GuiRitter, may fault about parenting vertex the camera, already fixed in the answer, about your problem i dont know what else to do. it should work, maybe a problem with your hardware, opengl, driver, a can figure it out.

You need set up only one sun lamp.

(Asuming all objects are deselect)RigthMouseButton to select the sun lamp and while pressing Shit + RigthMouseButton select your player:

While both selected press Ctrl + P and select Vertex:

select, deselect all pressing A.
Select the sun lamp RigthMouseButton.
in property > data, active the shadow and show shadow check box.

In Quality you can edit the shadow size (higher value more impact)
In Quality you can edit the 'Bias' value, set to 0.1 and then go up to see what happens :P.
In Clipping the clip end value define the distance, beyond which objects will no generate shadows

In Clipping the frustum size value define the box size

Note HIGHER VALUES MAY HAVE PERFORMACE IMPACT
EDIT
You will notice bad light:

Then add a Hemi lamp and point it oposite to the sun lamp

ANSWER ANSWER!
The problem is with the camera.
I have reproduced the problem in 2 ways.

Positioning the camera closer or inside of an object with camera physics static
Positioning the camera inside of an object with camera physics no collision

Also found that your camera was tiny and the cylinder(character) too.
take a look to the blender manual> render>camera
To solve it:
1.Delete the camera and add a new camera (and dont scale it)
2.Move the camera To Position (dont put it inside of an object.) Make sure that the camera physics are no collision.

Yo can change the size of the camera:

And then you can parent the camera to object, and the sun to the  vertex object (better with vertex make parent in edition mode).

See the update in the first post

Your updated answer didn't work :'( (I updated the first post again)

Tilt the camera by 0.1 degrees up or down to fix the problem.
This is a bug since Blender 2.77, source: https://developer.blender.org/T48256


text:
VSE · Mute audio on rendered video
I have the following setup in VSE, it's a mosaic of 4 video files, 2 with sound:

When I render the output video and play it in VLC, in Media Information (ctrl + J) it says that it contains an audio stream, but no sound is played.
I've checked a few things in the Properties panel. In Post Processing, Sequencer is enabled. In Output, I tried a few different Movie file formats, clicking on RGB when required. In Encoding, I tried a few different Formats and Audio Codecs, and the Volume is at 1. In the Scene tab, in Audio, I tried with volume at 1 and 100. In the VSE, the strips are not muted. I've checked the file paths.
I've tried on Blender 2.78c on Windows 7 x64 and on 2.78a on Debian 9. I don't know what else to try.
Thanks in advance.

Does it work with a video from different source? So you can know it is not your source videos codec related.

Tested on W7 with an MP4 video recorded from my Android; H.264 preset and MP3 sound codec. Sound worked correctly after rendering. The project above still have no sound with the same settings. Will test on Debian soon.

Same on Debian.


text:
Get pixel coord in rendered image of pixel coord in texture

Problem:
As shown in the figure above, I have the coordinate pair (x, y) which describes a certain point in an image texture and I want the corresponding coordinate pair (x_, y_) which describes the same point in the texture inside of the rendered image.
Details:
The texture is applied onto a plane primitive and the texture mapping mode is "Generated", not "UV". The plane as well as the camera can be rotated and translated arbitrarily, but not to such an extent that the front side of the plane is not visible in the rendering anymore. Furthermore, the plane is scaled in x-direction to match the texture's aspect ratio. I am using Blender 2.79.

The task can be split into to subtasks:

Calculate the corresponding (x, y, z) coordinate triple of the point p on the plane's surface in 3D-space, onto which the point of interest gets mapped in object space.
Project this 3D-point p in object space into the 2D-space of the rendered image via world space and camera space.

Theory for subtask 1:
The plane's vertices are:
(-1.0000, -1.0000, 0.0000)
(1.0000, -1.0000, 0.0000)
(-1.0000, 1.0000, 0.0000)
(1.0000, 1.0000, 0.0000)

as confirmed by:
for v in sign.data.vertices: print(v.co)

while texture coordinates lie within [0, tex_width] for x and [0, tex_height] for y.
Therefore, p.x, p.y and p.z should be:
p.x = x / tex_width * 2 - 1
p.y = y / tex_height * 2 - 1
p.z = 0

(Divide by texture width and height to rescale coordinates to range [0, 1], multiply by plane width and height (both equal to 2 blender units) to rescale coordinates to range [0, 2] and subtract 1 to shift to range [-1, 1].)
Theory for subtask 2:
The point p should be projected onto the image plane via the model-view-projection matrix (MVP-matrix) which is composed as follows:
mvp_matrix = projection_matrix * view_matrix * model_matrix

All four matrices are 4x4. For projection, p is given a fourth component w = 1, to make it homogenous. Now it can be projected to p_ in camera space as follows:
p_ = mvp_matrix * p

The coordinates of p_ should be in range [0, 1]. The desired coordinates (x_, y_) can then be calculated by rescaling p_.x and p_.y to the ranges [0, res_x], [0, res_y], res_x and res_y being the resolution of the rendered image:
x_ = p_.x * res_x
y_ = p_.y * res_y

Code:
import math
from mathutils import Vector
import bpy

# set up scene
scn = bpy.context.scene
scn.render.engine = "CYCLES"
for o in bpy.data.objects:
    if o.type == "MESH":  # delete cube
        bpy.data.objects.remove(o, do_unlink=True)

# load texture, calculate aspect ratio
im_tex = bpy.data.images.load("texture.png")
tex_w, tex_h = im_tex.size
ratio = tex_w/tex_h

# add plane and rescale, rotate and translate it
bpy.ops.mesh.primitive_plane_add()
plane = bpy.context.active_object
plane.scale = (ratio, 1., 1.)
plane.location = (2, 10, 1)
plane.rotation_euler = (math.radians(90),
                        math.radians(5),
                        math.radians(-15))

# set up material and apply texture
mat = bpy.data.materials.new("Material")
mat.use_nodes = True
mat.node_tree.nodes.clear()
input_node = mat.node_tree.nodes.new(type="ShaderNodeTexCoord")
tex_node = mat.node_tree.nodes.new(type="ShaderNodeTexImage")
tex_node.image = bpy.data.images.load("texture.png")
bsdf_node = mat.node_tree.nodes.new(type='ShaderNodeBsdfPrincipled')
output_node = mat.node_tree.nodes.new(type='ShaderNodeOutputMaterial')
links = mat.node_tree.links
link_0 = links.new(input_node.outputs["Generated"], tex_node.inputs["Vector"])
link_1 = links.new(tex_node.outputs["Color"], bsdf_node.inputs["Base Color"])
link_2 = links.new(bsdf_node.outputs["BSDF"], output_node.inputs["Surface"])
plane.data.materials.append(mat)

# set up camera, rotate it and translate it
cam = bpy.context.scene.camera
cam.rotation_euler = (math.radians(90), 0, math.radians(5))
cam.location = (0, -1, 0)

# render and save blend-file for debugging
bpy.ops.wm.save_as_mainfile(filepath="debug.blend")
scn.render.filepath = "rendering.png"
bpy.ops.render.render(write_still=True, use_viewport=True)

# now for the interesting part:

(x, y) = (150, 90)  # arbitrary point on texture
                     # Let's assume the texture resolution is (745, 543)

# subtask 1:
p = Vector((x * 2 / tex_w - 1.0,
            y * 2 / tex_h - 1.0,
            0,
            1))

res_x = scn.render.resolution_x * scn.render.resolution_percentage / 100
res_y = scn.render.resolution_y * scn.render.resolution_percentage / 100
asp_x = scn.render.pixel_aspect_x
asp_y = scn.render.pixel_aspect_y

# Projection matrix:
p_mtx = cam.calc_matrix_camera(res_x, res_y, asp_x, asp_y)
# This corresponds to the model-view-matrix:
mv_mtx = cam.matrix_world.inverted() * plane.matrix_world.copy()
mvp_mtx = p_mtx * mv_mtx

# subtask 2:
p_ = mvp_mtx * p

p_x, p_y, _, _ = p_
x_ = res_x * p_x
y_ = res_y * p_y

print(x_, y_)

The result for this example is 4471.2872314453125 851.4681959152222, which isn't even in the rendering which has a resolution of (960, 540). The desired output would be something like 692.0, 104.5).
Questions:

Is there any error in my subtask theories?
What is wrong with my implementation?

Appendix:
texture.png:
Resolution (745, 543), mark at (150, 90)

rendering.png:

The mark should be considered from the bottom left, I think (but this is probably not the only issue).

Have a look to world_to_camera_view https://docs.blender.org/api/current/bpy_extras.object_utils.html#bpy_extras.object_utils.world_to_camera_view (ok for 2.79 too) and eventually its source code: https://github.com/sobotka/blender/blob/0d3493d6d9827d08212b34cfc12cacfb75d167b1/release/scripts/modules/bpy_extras/object_utils.py

@lemon: Thanks, these were great hints!

Let's ignore the aspect ratio for now. The projection matrix function may sound cool, but I would settle for the easier world_to_camera_view which lemon suggests in the comments.
Y-coordinates increase upwards (bottom = 0, top = 1).

Get the world coordinate of the point by applying the object matrix.
Get the relative camera coordinate using world_to_camera_view.
Get the absolute render coordinate by multiplying with the resolution.

Note, that we require a scene.update() call before using the plane.matrix_world.
(x, y) = (150, 543-90)  # arbitrary point on texture
                        # Let's assume the texture resolution is (748, 543)

res_x = scn.render.resolution_x * scn.render.resolution_percentage / 100
res_y = scn.render.resolution_y * scn.render.resolution_percentage / 100

p = Vector((x * 2 / tex_w - 1.0, y * 2 / tex_h - 1.0, 0))

bpy.context.scene.update()
p_camera = world_to_camera_view(bpy.context.scene, cam, plane.matrix_world * p)

p_camera.x *= res_x
p_camera.y *= res_y
print(p_camera)

By the way, if you prepare code for others: Nobody can understand pv_mtx, x_myt or pmt_xxty without comments.

Thank you, this works great! I changed only one thing: p_camera.y = 540 - (p_camera.y * res_y) This way the y-coordinate is counted from the top again, my preferred convention for the rest of my script.
As for your comment: I tried to choose good variable names which are not too long to keep the code short and readable, but I'll try harder next time and choose more explicit names!

Just one small follow up question: What is the scene update supposed to do? The code also seems to work without it. Maybe it can go wrong without the update, but doesn't necessarily?

Ah, nevermind. I think I found the answer: https://docs.blender.org/api/2.79/info_gotcha.html#no-updates-after-setting-values

@S818 A short variable name with uncertain meaning has much worse readability than a long name with unambiguous meaning. The length would have to be ridiculous before the reverse holds true. Even say, the_camera_coordinate_lying_on_the_y_axis, as silly as that is, is better than, for example, c_y which is not readable at all. (This is for shared code. For private code do whatever you want...though best to practice good habits there, too.)