How to change armature animation so it depends on rotation not translation

You can create new bones within the head, add a stretch to constraint and then bake the animation to get bones that rotate and scale and not translate.

Select a bone on the face (forehead1 in this example)
Snap cursor to bone ShiftS Cursor to Selected
Select tip of the base bone (that is parent of all others)
Extrude a new bone E
Snap the tip of the new bone to the target bone ShiftS Selected to cursor
Name the new bone to forehead1.new (see later)
Add a stretch to constraint and set the target to Armature then bone to forehead1

Repeat these steps for each bone

Bake the animation (Pose->Animation->Bake action, enable visual keying and clear constraints), this will turn the movement created by the constraints into rotations and scales for the bone so that the constraint can be removed. This allows the final animation data to be exported as constraints are blender specific.

select forehead1 and delete the bone
select forehead1.new and rename it to forehead1

Repeat for each bone

This is needed to keep the vertex weights in effect for the new bones, giving the new bones control of deforming the mesh. If you rename the original bone the vertex group will get renamed to match, therefore we need to delete the original bone and rename the new bone to match after the animation has been baked.

Edit:
I have made an addon called Rotation Armature to perform this task. Save the script from the link, then install and enable it you will then find a button in the tools tab called Create rotational bones which will perform the steps listed above. This is currently rather specific to the test armature you used, I may update it later to be more versatile.


Are you using glass BSDF or transmission of the default principle ? Try to change the IOR value(if it is a glass node). See if that works.
And yes, also check if your model is perfect and a bit high poly. It is not needed but it is recommended.


Does blender drain battery life when I'm not using it?

Unless you are rendering or have an active process (like generating a simulation), blender won't run in the Background on your Computer, so it shouldn't drain any Battery


Constraints

Consider a follow path constraint.  Which can rotate objects along the curve.
The curve hugger bones can have parents but must NOT be connected.  The cutting teeth can be connected to the hugger bones.  I assume the geometric normal bones are cutting teeth.
I do not think Spline Constraint is favorable.
Consider a conform modifier.  No rotation.
If you are really daring you might consider rigid body chain links.  Some people consider these situations unstable.


Maths question regarding curved bay window

@batFINGER's or something like it, is clearly the most accurate way, but if eyeballing is enough, you can use the Spin tool to create an arc between 3 points.
If the 2 end vertices are not aligned to a convenient set of axes, you may have to make a Custom Orientation from them.
Select the 2 end vertices, and ShiftS Cursor to selected.
ShiftD duplicate one of the end vertices, and call up the Spin tool. Adjust the spin center in the perpendicular to the two ends to pass the arc of the spun vertex through the third point, and its angle to span the end points.


I am having lots of trouble trying to get light to shine through a window

For some reason my computer isn't letting me access the file, I don't think it's an issue from your end though. I know I can't offer much assistance, but your question brought to mind a glass hack that I once saw in a video from Blender Guru. The link is here and the node set up is at 5:02 in the video. If this is useless information to you I'm very sorry.


I parented a light source to an object, Is there a way to apply a modifier to both?[cycles]

I have also been trying to add lamp posts along a road path via blender scripting, and here's the solution I applied:

Add a lamp post mesh which will become the parent of your light source (If your mesh consists of multiple parts, join them by 'Boolean Modifier > Union')
Add array modifier (and curve modifier if your road path is a curve) to your lamp post object to copy it along the road, then apply the modifiers
Apply 'Seperate > By Loose Parts' to your lamp post object to get multiple objects instead of one
For every lamp post, add a light source and make the lamp post the parent of light source

You can see my approach in code down below:
bpy.ops.import_mesh.stl(filepath=os.path.join(os.path.dirname(bpy.data.filepath), "models/lamp.stl"))
lamp_ob = bpy.context.selected_objects[0]
bpy.data.collections["Lights"].objects.link(lamp_ob)
bpy.context.scene.collection.objects.unlink(lamp_ob)

if laneCount == 3:
    lamp_ob.location = (0,4.2,0)
else:
    lamp_ob.location = (0,3.2,0)

lamp_array_mod = lamp_ob.modifiers.new("LampArray", 'ARRAY')
lamp_array_mod.fit_type = "FIT_CURVE"
lamp_array_mod.curve = road_curve
lamp_array_mod.constant_offset_displace = (15,0,0)
lamp_array_mod.use_constant_offset = True

lamp_curve_mod = lamp_ob.modifiers.new("LampCurve", 'CURVE')
lamp_curve_mod.object = road_curve

for modifier in lamp_ob.modifiers:
    bpy.ops.object.modifier_apply(modifier=modifier.name)

bpy.ops.mesh.separate(type='LOOSE')
bpy.ops.object.origin_set(type='ORIGIN_CENTER_OF_VOLUME')

for index, obj in enumerate(light_collection.all_objects):
    bpy.ops.object.light_add(type='POINT', radius=2.0, location=(0,-0.25,1.25))
    light_ob = bpy.context.selected_objects[0]
    light_ob.name = "Light" + str(index)
    light_ob.parent = obj
    light_ob.data.energy = 500
    light_ob.data.specular_factor = 10

This may not be the best scripting practice and there are some lines not related to the solution, so anyone can reach me out if any further explanation is needed :)
Footnote: I use .stl models since texture is not required for models in my case.


Assign an object to 2 parents with offset for each

I've figured this out.

I created an Empty for each target bone, parented each empty to the respective bone, positioned it as desired, then used the empties as targets for the ChildOf constraints.


How would you hide the cracks in cell fracture?

You could put the unsharded cube in one layer and the shards in another layer:

by selecting the shards
using M and click the other layer

(the shards are already put in another layer by default when using the cell fracture)

Then in the properties panel, in the renderlayers tab you could use keyframes in the exclude section (assuming you use cycles render).
Before collision, keyframe in such a way that only the shards-layer is active in the exclude section. After collision, keyframe in such a way that only the unsharded-layer is active in the exclude section. Make sure in the scene section both the layers are active.

But using this exclude method, just must make sure the unsharded cube and shard move in a same way for smooth transition during switching excluded layers

For example, if the collision occurs at frame 100. Then at frame 100, it looks like this:

And at frame 101:

To make the cube break more realistically, you could use the Bullet constraint tool https://www.dropbox.com/s/fq3nmhl4b6yyhc3/Bullet_Viewport_Constraints_Tool.zip
Select shards, define your Search Radius (100 works ok) and Neighbour limit (10 works ok), and turn on breakable (enable checkbox twice!) and define the breakable value (higher value make it less easy to break).

After you make changes in these variables (while shards selected), then click 'update selected'


How to access a variable from another python file in BGE

When you register your script it becomes a module which you can then import in another script.


How to have round edges when I subdivide with a subsurface modifier?

Remove unnecessary edges(follow this instruction) after that you could add your modifier


Normal Maps seem to be baked with Low Poly Details

The main problem is that you are baking a normal map suited for OpenGl. Unreal uses DirectX normal maps. You can easily solve this by inverting the green channel. It can be done during bake in blender, in photoshop or in Unreal in the material.

The dark scene in Cycles needs some lights to be useful. But if you need to have it shown correctly with the DirectX normal maps you need to invert the green channel in the material.

The next problem you have, is the artefact which is caused by a very thin triangle. (Even it you don't see triangles, all faces will be split into triangles during rendering and baking.) When the normal bends over the face and there aren't enough pixels the baker will not be able to create that bend without aliasing. The fastest way of fixing this is to give that face more room on the UV map. That would increase the resolution for that area only. But the better way would be to avoid thin triangles.


How to redirect output from 'bpy.ops.*'?

This can be done by temporarily overriding the output using redirect_stdout.

eg:

Short example:

from contextlib import redirect_stdout
import io
stdout = io.StringIO()
with redirect_stdout(stdout):
    bpy.ops.mesh.remove_doubles()

Commented answer with redirect:

# Python module to redirect the sys.stdout
from contextlib import redirect_stdout
# So we can create a file-like object
import io

# our new output
stdout = io.StringIO()

with redirect_stdout(stdout):
    # any printing or operator output within this block
    # will go into 'stdout'
    bpy.ops.mesh.remove_doubles()

# if you like to get the output and use it
# you can read it as if its a regular file.
stdout.seek(0)
output = stdout.read()
del stdout

print("We caught the output, it was %d long!" % len(output))

Note, that this can also be used to re-direct operator reports for your own use, and example of this is a benchmarking tool which extracts output from the draw timer.
https://gitlab.com/ideasman42/blender-fps-bench/blob/master/blender_fps_bench.py#L196


I can see my model in solid view but I can't see then in rendered view and when I render the image

If you are using blender 2.8 or higher there can be a "bug" when using older files where it doesn't show if things will be shown in renders. you can enable it manually like this.

A greyed-out camera means it won't show up in the render.


How can I manipulate the properties of a pattern as a fabric using Blender?

well.. there is Blender. But depending on your need, Blender could be a little overkill, possibly. It is a steep learning curve, but a very, very powerful programme (yes, it is free and opensource).

I am sure there are other, intermediate 3D programmes out there, but as a bottom line, I think Blender is worth the effort. It might be overkill for this job specifically, but it will probably pay off in longer term.

Edit I: I would also say that the reason why you want to do this is important. What is the goal? In professional 3d programmes, you have a plethora of alternatives for a plane  and polygons to act in different ways. You have cloth-effects with predefined constrains (thickness, cloth type, colour, substance). This might be useful, as you could make polygons of various shapes, and then "drape" the cloth over it, and it will act as a twisted mesh. Just a thought.

Edit II: I am not well versed in autodesk, but here are some examples from Blender (Blender is the open-source cousin of Maya):

This image is taken from this tutorial.

An explanation of how it works here.

Of course, you do not have to make it that clothlike. You can set properties to be a stiffer material (i.e. fewer vertices, thicker material), and what shapes you choose to drape your mesh over will of course define the resolution.


You can either move your origin (1),
or move your vertices in edit mode (2).

Solution 01. Move the origin
Set Transform to only affect Origins
Sidebar > Tool > Transform only Origins

Then you can move Origin point as any other object.
Disable it again to move your object back to 0,0,0.

Solution 02. Move vertices
Switch to Edit mode, select and move vertices.
This will keep the origin point in place.

Note:
You need to do this for each new object.


Sorry for any trouble, but I was able to find the answer in one of the Blender docs. The real culprit was the Image Texture I was using for body_normals.png:

  (emphasisis added by me)
  Generate a perturbed normal from an RGB normal map image. This is usually chained with an Image Texture node in the color input, to specify the normal map image. For tangent space normal maps, the UV coordinates for the image must match, and the image texture should be set to Non-Color mode to give correct results.

I guess I must have skipped over this part in this project. Switching to Non-Color data in the Image Texture fixed my problem :). Now there is are no hard-edged polygon shading weirdness anymore.


Using Normal Transformation on a group of objects in Object mode in Blender 2.92

After you selected the objects just press G and then twice the axis you wanna move.
E.g. G -> Z -> Z to move on local z-axis


How to properly export scene to 3ds Max?

As of Blender 2.8x you can export your entire scene using Alembic or USD (Autodesk is working on adding USD support).

Layout in Blender

Alembic file imported into 3ds Max 2019

3ds is a deprecated file format. For Blender 2.7x export your scene to FBX 6.1 ASCII, this should work immediately. In some cases you have to adjust the settings because it also depends on your 3ds Max version and the version of the fbx plugin installed.

Suzanne in Blender 2.73a

Suzanne in 3ds Max 2012

Other options

Collada (.dae) - For instructions, see: How to export a motion tracked camera to 3ds Max?
Wavefront (.obj) - For exporting multiple obj files, see Export multiple objects to .obj


Cannot move Planar Track bounding box points

I figured out what the problem is.  I am using the MAYA Input User Preferences, and in the Clip preferences there is no input setting for moving the Plane Marker as there is in the Blender input settings. If I switch to the Blender Input Prefs the mouse manipulations work. So I had to create a new input binding under the Maya Input Prefs just like the one in the Blender Prefs.  It works now.

The input binding is under Input->Clip->Clip Editor->Slide Plane Marker.


I believe the answer is no.
However, you can clear the list by saving and reopening the .blend:
From the UI:

Save the file with CtrlS

Reload it with CtrlShiftO1

With python:

Save the file with save_mainfile()

Open the file with open_mainfile()

For example:
import bpy

file="/tmp/test.blend"
bpy.ops.wm.save_mainfile(filepath=file)
bpy.ops.wm.open_mainfile(filepath=file)


How to Bake a Displacement / Height Map from a High Poly to a Low Poly Mesh?

You should be able to use Blender 2.79b for baking the displacement until it is available in 2.8x

https://download.blender.org/release/Blender2.79/

Thanks for sending the .blend - it seems that your model was too small

So, when I scaled it to be roughly dimensions x=15, y=12 and z=8 and then applied the scales for both objects CTRL+A, the baking was successful with the values Distance: 0 and Bias: 0

And, you get even greater results if you scale it then with 10 and apply the scales.


How to End object in BGE after multiple collisions

Make a new Game Property called lives. Use a collision sensor set to tap, and make a new Property actuator, set mode to add, property to lives, and value to -1. Then add a Property sensor, set property to lives, and value to 0. Connect it to an Edit_Object, end_Object actuator. Set lives to however many lives you want. Hopes this helps


How do you know if a collection has been clicked on by the user using Python?

It’s easier than you might think: Either get the collection in context (C.collection) or the collection of the active View Layer (C.view_layer.active_layer_collection). Both attributes return a reference to the selected collection in the Outliner allowing to access the name of the collection by using its name attribute to compare against.
Adding the following poll method to your panel class will only return True in case the selected collection is called MyCollection and thus display the panel:
@classmethod
def poll(cls, context):
    return context.collection.name == "MyCollection"

Code based on ui_panel_simple.py template:
import bpy

class HelloWorldPanel(bpy.types.Panel):
    """Creates a Panel in the Object properties window"""
    bl_label = "Hello World Panel"
    bl_idname = "OBJECT_PT_hello"
    bl_space_type = 'PROPERTIES'
    bl_region_type = 'WINDOW'
    bl_context = "object"

    @classmethod
    def poll(cls, context):
        return context.collection.name == "MyCollection"

    def draw(self, context):
        layout = self.layout

        obj = context.object

        row = layout.row()
        row.label(text="Hello world!", icon='WORLD_DATA')

        row = layout.row()
        row.label(text="Active object is: " + obj.name)
        row = layout.row()
        row.prop(obj, "name")

        row = layout.row()
        row.operator("mesh.primitive_cube_add")

def register():
    bpy.utils.register_class(HelloWorldPanel)

def unregister():
    bpy.utils.unregister_class(HelloWorldPanel)

if __name__ == "__main__":
    register()

Further reading:

How to create a custom UI?
What do operator methods do? (poll, invoke, execute, draw & modal)


I believe he has the subsurface modifier (Subdivision Surface) turned on (around 2:00).  He did not apply it so it's dynamic.


3d view looks really wonky. All I see is what appears to be the camera view?

You probably wanted to draw a border and accidentally hit ALTB instead of what you wanted and drew a clipping border. The magical cutout to help you see clearly in a packed scene. Just hit it again and it should vanish.

https://docs.blender.org/manual/en/dev/editors/3dview/navigate/clip.html


How can I create Light Streaks in Cycles?

An alternative method  would be not to use particles, and do the light streaks with curves. It might a bit more tedious to set up, but will not require as much computing power from your machine as particles do.

Give the curve a slight bevel and, by animating the Bevel Factor start and  end  values, you can control how the curve is rendered through the screen . You also have control on the resolution, curvature, start and end points, and you can precisely determine the trajectory.

EDIT

To change the width at different parts of the curve you can change the radius of the control points:

Add an emissive material to it and some glow on the compositor and you can easily achieve something like this:

If you give the curve some extrusion and bevel and a wild texture

you can have a lot of fun:


How to checker deselect edge and vertex rings

Since my answer this similar question is somewhat outdated, here's a new answer.
Edge loops

Ensure you're in edge select mode (⎈ Ctrl↹ Tab)

Select an edge ring by pressing ⎈ Ctrl⎇ Alt RMB over an edge

Run checker deselect (the Space search is useful here)

Run multi select loops

Note that this selects edge loops as shown in your example. To do the same for edge rings, do the inverse:
Edge rings

Ensure you're still in edge select mode
Select an edge loop this time (⎇ Alt RMB)
Run checker deselect
Run multi select loops, then enable rings in the redo menu (F6 or 3D view > Toolshelf)


I overlooked the 'hidden' menu, obscured by my small window. With thanks to Mr Zak for pointing out the 'change pivot', and my discovery of the 2D cursor.


You could:

Create a plane, subdivide:

Give it a Decimate modifier / Collapse mode, with a ratio of 0.5, apply:

Select all in Edit mode and CtrlT to triangulate:

Then CtrlF > Poke Faces:

Bring a bit more chaos with some vertices move if you want, then select one triangle center and ShiftG > Amount of connecting edges to select all the triangle centers:

Move them up:


View camera vs. Perspective camera (scheimpflug optics)

You can skew the relation between the lens and the focal plane using the SHIFT values for the lens. That will give you control of the perspective the same way you'd control a tilt/shift lens on a studio camera. There is no way AFIK to rotate the camera plane from the lens plane though.

This example show the same scene, with the same lens, WITH THE CAMERA ON THE SAME PLACE, and how shifting affects the perspective (I was trying to keep the object on the left in the frame to magnify the effect):

(Animated version here)

Blend file here:


Outliner locked me out, layers highlighted green, and many layers are hidden cant unhide

There aren't any layers in Outliner, it shows object datablocks present in your scenes (in this case in the parented hierarchy).

Highlighted in green means results of the search:

Above green highlight shows everything which fits letter "M" in the search (which can be anywhere in the word).

Remove the search keywords and search filter won't be applied anymore.

Aside from that some objects in your scene are set as non-editable (White Arrows to the right from the object datablock name), which means they will be visible but not selectable. You might need to turn them on for further editing.


Why does my extruding not work like this?

You have overlapping vertices, it messes up your extrusion, go in Edit mode, select all and press AltM > Merge by Distance.

The threshold in the Operator box should be enough.


Trying to add a scene in the video editing mode I get "No Items Available" [Blender 2.8]

Solved!

You just need to add a new scene and add to the new scene the text instead of adding text in the default scene.
Once done that if you go to video editing mode -> add -> scene you will see the new scene appearing as an option.


Create a Group of Objects That Hide or Unhide as One

You can select a number of objects, and key Ctrl + G to add them to a new group. Then, whenever you want to hide them, key Shift + G to open the Select Grouped menu and select Group.

Key H to hide them and Alt + H to unhide all hidden objects.

Additionally, you can clear the group from any or all of the objects by selecting 1 or more and keying Ctrl + Alt + G. You can also add more objects to the group. Do this by selecting the objects that you want to add, selecting an object that is part of the group, and keying Shift + Ctrl + G.

Hope this helps and happy Blending!


How can I sharpen the light fall off for a rotating earth animation with 2 materials?

In the tutorial, the "earth" has a lighter falloff. I think what might be allowable is to add a couple more lights in the scene, one a low-brightness hemisphere, and one a sort of blueish light. This, if applied right, could produce a similar result in an animation.


Your model is huge, and that is causing lots of problems.

Specifically for those shadows Ambient Occlusion is to blame. The model is so huge that even with the insane values you have for ambient occlusion, it only affects small creases in the model, but with great intensity. If you disable ambient occlusion however you get another issue: everything is dark.

The way you have set up your background node does not affect your model, so no environment light exists. You could either remove the camera ray constraint from the world texture, use a nice neutral grey for background and use the compositor to set up a background color, or keep it and add some lights to your scene.

However adding lights does nothing, unless you crank up the intensity to hundreds of thousands, another issue with the size of your model.

I'd say just resize your model to a more manageable size (something like a real human): then both AO and lights will work as expected with sane values.


Not really sure what happened there, did you change any settings under the key map editor? You may have run into some sort of bug.

Did you uninstall prior to reinstalling? If reinstalling Blender did not solve the problem, then you may need to clear your Blender user preferences.
Not sure how the installer works, or if it deletes/overwrites user preferences on setup, I always use the "portable" standalone versions, but apparently something must have been left over from previous installation.

Try one of the following:

Either go to your user profile folder, should be located under C:\Users\User Name\AppData\Roaming\Blender Foundation\Blender\2.##\config and delete whatever content is there. Make sure you back up any relevant files before deleting if you have customized any Blender preferences or settings. Then Run Blender again

or

Try and download one of the zipped Blender packages, unpack it anywhere in you system (say like the Desktop), then using the file explorer navigate to the extracted folder and under Blender\2.##\ create a new folder named "Config" so that it's path is Blender\2.##\Config and then try and run Blender from Blender\blender-app.exe


How to rotate an object on the local axis?

Hitting RZZ will rotate an object about its local Z axis.
The second time you hit Z switches from global to local axes.

If you want to default to local axes, you can switch the mode from "Global" to "Local" in the header of the 3D view:

About your specific case:
In Blender, a torus is created with its local Z axis pointing through the hole at its center. Unless you have applied its rotations since it was created, hitting RZZ will rotate it about its local Z axis. (You'll see  the axis displayed as a blue line). The second time you hit Z, in this case, switches from global to local axes.
Or, if you turn on your rotation gizmo (the small button with an arc on it to the left of where it says Global' in the header at the bottom of your 3D view), and switch the 'Global' to 'Local', you'll see the axes available to you.


My object is smooth in solid view but not in rendered mode

Solved! Just increased value of view in render in subdivision surface modifier


When joining already uwrapped objects, you have 2 options:

UV maps before joining objects were called equally

The default name for UV map after it's created is "UVMap". If it wasn't changed or if both objects have this map renamed so objects still has UV map called the same, after joining it will become one UV map:

All the islands of both objects will be added on this UV map as they were in original maps. So most likely they will overlap and it may be desired to pack and / or organize them in some way.

UV maps before joining objects were called differently

Resulting object will have as many UV maps as there were ones with different names (in example below 2).

All the islands are on their original maps and there isn't any overlapping. This may be desirable in some cases (e.g. baking). Note though that one object may have no more than 8 UV maps.


How to copy a Cutout from one Object to another

Based on the instructions provided by Leander, this is how a copied a hole from one object and added to another similar object.  Note - there are other easier ways to do this like Knife Project or simply making one object and duplicating it. But I wanted to learn.

Select object to copy from and tab into edit mode

Select vertices outlining the feature (hole) to copy.  In this case also selecting the faces which will replace the faces on the object to be modified.
Shft-D to duplicate the vertices and move them to the side

Separate the duplicate vertices from the original object by clicking P and selecting by loose parts

I should have done this next. Select other object and tab into edit mode. Select faces to be replaced and delete them. Exit edit mode.

Select duplicate vertices and Set Origin to Geometry

Select object to be modified and center cursor on object Shft-S cursor to selection
Select duplicate vertices and Shft-S selection to cursor
Add new object to duplicate vertices Shft-LMB
Join vertices and new object Ctrl-J join


Found out that the "simplify" in the export options(fbx) seems to remove the keyframes. Exported the mesh with that option turn off, exports with the keyframes correctly.


Blend4Web does not render in Mac OS Sierra 10.12.6

This is a known Chrome 60 bug which is already fixed by Google in Chrome 61. Nevertheless, we're going to include a workaround in the upcoming 17.06 LTS and 17.08 releases.


To seamlessly animate a moving texture you can use the same technique as described in Seamless animation loop of procedural textures but using a Musgrave texture in place of the two Voronoi. Here's the result of the Blend file from the linked answer with the Voronoi swapped out to Musgrave textures :

However, for a static but animating musgrave you would need to have an additional 'dimension' of the texture that can be varied without affecting the mapping (as in the OSL solution linked to your question). OSL does not seem to provide an equivalent texture to the Musgrave node so you would either need to reconstruct it mathematically (if you know the algorithm for generating the Musgrave texture) or you need to be able to use the 3-dimensional Vector input of the existing Musgrave node to simultaneously map to your mesh while still providing a dimension to vary for the animation.

To achieve this you could simply unwrap your mesh, providing UV coordinates that can be used for the X and Y coordinates to the Musgrave texture and vary the Z coordinate. This can be achieved using the following nodes :

In my case I unwrapped Suzanne using a Sphere projection. Varying the Value node effectively animates the Musgrave texture by selecting a 'slice' of the XYZ texture space to map to the 2-dimensional UV space.

This can produce the following result :

Another alternative is to produce a musgrave-like texture by combining Noise textures to produce an output that varies similar to Musgrave fBM. By tweaking the settings we can get something very similar to Musgrave. For example, in the following image the right-hand-side is the default Musgrave texture while on the left is produced by combining two Noise textures :

To produce this we can use the following nodes :

This will produce a true 3D texture (rather than mapping via UV as in the previous solution) and so does not suffer from 'seams'. By animating the input vector (which effectively acts as a 'seed') we can smoothly vary the effect.

This works by taking the Object coordinates and generating two vectors - one moved in the direction of the 'seed' and the other moved in the opposite direction. By using two offsets we can remove any visible 'direction of motion' while changing the 'seed' since the two vectors effectively cancel each other out. The two vectors pass to two Noise textures - these should typically be set to the same values (in particular the Scale) but you may get some interesting results by using different settings. In order to produce the Musgrave-like range of output, we then subtract one noise from the other, one channel is extracted (so it becomes monochrome - you can optionally use the other channels which will produce a similar output (but different pattern) and this is scaled with a Math node to produce output approximately in the range -1.0 to 1.0 similar to the actual Musgrave output.

You can animate the result by varying the 'seed' vector to produce a result similar to the following :

Blend file included


Blender 2.8 - CTRL+R not working(loop cut and slide tool)

Your model is just one big N-GON, and the tool only works on quads. Check out this link to learn a little more about modeling with tris, quads and n-gons.

This is your model (remade by me) with much better topology.  The loop cut and slide tool will work correctly with this kind of topology.  Also, getting your model to look like this will give you some good modeling practice.


Is there a way to lock the topology in edit mode?

I'm using ManualBastioniLab too, and do the same accidental thing, grr. Right now my fastest solution is to delete it, start a new avatar, and import the backup json file (there's a plugin somewhere  - I can't remember where I got it, google to find it). Not a perfect solution, because I've usually just fixed the overlapping UVs that ManualBastioniLab creates and will need to do it over, but it's faster than trying to repair the broken topology.


Does Blender use a Python Virtual Environment?

Current state of Blender's Python integration

Blender has its own Python interpreter, modules and libraries and is therefore entirely separated from your system's Python installation(s). The interpreter is linked into Blender's binary. It does not create or use  virtual environments. The add-ons and commands from the Python console are executed by the same Python interpreter and therefore have access to the same modules and libraries. There is no isolation or separate dependency management for each individual add-on. Hence, add-on developers need to be careful not to install packages that could conflict with other add-ons. Currently Blender has no unified way to install the required dependencies through the Python API. This also raises the question how the user is notified that the add-on requires additional packages. Depending on the location of Blender's directory, the installation may require elevated privileges.

Since the current design is not an optimal solution, alternatives are being discussed by the developers and the community (see T71420). Recent versions have solidified the separation of Blender's Python and the system's Python by ignoring the PYTHONHOME and PYTHONPATH environment variables, unless the --python-use-system-env command line flag is passed to Blender, which add-on developers cannot rely on. This implies that add-ons are no longer supposed to install dependencies to the user's site-packages  (see T76993), thus no --user flag should be supplied to pip when installing packages. Technically this is still possible, as detailed in the linked ticket, but it's apparently not the intended way.

What does this mean in practice?

Currently your add-on can install dependencies, but it has to:

Check if pip is available and install it if it isn't (only Windows comes with pip pre-installed, at the time of writing)
Install the required packages through subprocess.

An example for this can be found on my GitHub. As previously noted, the required approach can change in future versions. Add-on developers aren't (yet) forced to ask for the user's permission before downloading and installing packages. Every add-on developer is expected to honor the privacy and autonomy of the user. Independent of this common courtesy are the actual OS permissions. If Blender's directory is located in, e.g. C:\Program Files on Windows, the user will have to start Blender with administrative privileges for your pip install to succeed or install the packages manually. The same is the case on Linux and macOS. Therefore, the add-on developer should provide instructions for this use case. Alternatively you could go against Blender's current design and manually add the user's site-packages to the sys.path as described by MACHIN3 in T76993. This avoids the permission issue when used in combination with the --user flag, since Blender has the necessary permissions to install packages in that directory.

Answering your questions

  Does Blender create a Python virtual environment for itself? [...]

No.

  [...] If so, how would I ensure I was working in the same one, if working outside the internal text editor / Python console?

The add-ons will use the same interpreter and thus will be able to load the same installed modules. This also applies to scripts that are supplied to Blender via the command line with the -P or --python argument.

If you want to run scripts that depend on bpy outside of Blender, then you're likely looking to build Blender as Python module.

  I wondered whether I should have activated an environment, and imported into that.

No, you shouldn't have, because that is not supported at the moment. Allowing completely separated virtual environments as venv implements it, would requires major changes to Blender's Python integration.

  [...] and i wondered what Blender's python/lib/python3.7/venv/ directory was doing

Blender includes all libraries that come with every Python installation and venv is one of them. It's not actually used by Blender. It should also be noted that the Python binary in python/bin is only there for convenience, e.g. if you want to install packages with pip. It isn't the actual Python interpret Blender uses. Blender's binary includes the Python interpreter, it's not a separate binary.

Conclusion

There is currently no standard way of installing and managing dependencies through Blender's API and every add-on developer is required to handle this on their own. Future versions of Blender will hopefully improve the process.


Need help making the nodules on buddhas head

Model the detail and array it along the curve. Place many curves with the arrayed meshes around the head.

Add a curve and wrap it around the head. Select your mesh (detail), add an array modifier to it and increase its count. Adjust its offset also. Make sure that the curve and mesh have the origins point set in the same position. Next add a curve modifier to your mesh. Now when you translate the curve's segments the mesh follows it.


“LMB-drag anywhere” in Blender 2.9 defaults to select

This one took me a while to find as well. With a tool selected (like the inset faces tool, for instance) open the Tool menu and change the drag mode from Tweak to Active Tool


Divide your stalk and dome into two separate objects, then assign one material to stalk and another one to the dome.


The torso and skirt texture is distorted yet everything else is fine

Ok I fixed your blend file for you.

This is a terrible answer and maybe the mods will erase this, Basically the uv's were off and it was too much trouble to manually try to fix them all. So I just erased half of your mesh and then added a mirror modifier so the texture exactly matches on both sides.


To animate an object you must use keyframes, a keyframe tells Blender the state of an object at a certain frame.  Blender will then interpolate the state of the object through the frames in between the keyframes.

To keyframe a property of an object, simply go to the frame where you want to place the keyframe, set the value of the property you want to animate, hover over the property with your mouse, and hit I.

Keyframed properties will be yellow at frames with a keyframe and green on all other frames.

To spin the object I added a keyframe for z-axis rotation of 0 at frame 0, then one for z-axis rotation of 10,000 at frame 240.  This makes the object spin 10,000 degrees over 240 frames.

You can then adjust the interpolation curve in the graph editor.

The interpolation is defined by a Bezier curve, you can select and manipulate the keframes and thier Bezier handles in the graph editor.


I would use a proxy if you want to keep everything as light as possible. As for the light, you could put it in a different collection in the character file so it doesn't get linked in and then append the light so it's locally in your animation file.
Library Overrides are like an advanced proxy technique. Yes, every single object gets imported and that can be a little overwhelming at the beginning. So you could just add a new child collection in the character file where you throw all the objects in to organize the outliner a bit better. Library overrides have the huge advantage that you can still access each part on its own so you could add modifiers on them in the animation file. Another usecase would be if you're using render layers and you want to separate your character to different layers. For example: I'm working on a vfx shot with a drone that has a laser beam. Using library overrides I can put the laser beam on its own render layer and bring it back in compositing to control the intensity of it.


Baking the normal map with a cage seems to resolve most of the shading errors I got earlier.
To do this check the cage option in the render tab under baker und set the extrusion to some fitting value. 0.05 did the trick for me.

Still wondering why such a simple object creates such huge shading errors though (yeah I know 90° angles everywhere..but still)


Lens distortion algorithm in Movie Clip Editor

they are just the factors of parabolic and quadratic distortion, as well as a distortion of power 6. lens distortion has to be symmetric/isotrtopic, hence it can be written as function of a pixels distance to the center. this distance changes with an towards the center (=distortion).

The new distorted distance to the center is
D_r(r) = r+ k1*(r)^2 + k2*(r)^4 + k3*(r)^6

with r being the distance in pixels. So its rather just mathematical parameters, that approximate real lens distortion, than any parameters of real lenses present in your camera.


Cursor keeps selecting vertices through the mesh without X-Ray on

Looks like a bug. First thing to do would be to make sure GPU drivers are up to date. Also try 2.83 version, see if maybe that is fixed already.
You could also see if enabling or disabling OpenGL Depth Picking has any effect on the issue:

If the problem persists, you should probably report it as a bug providing as much detailed info as possible.


Frame issues past 250, problems baking new frames

I found the problem, after changing a force limiter, the bake cache had to be flushed and reloaded. now it's fine.


Is there a way to delete objects without confirmation?

From Blender 2.8 onwards you can delete without confirmation by pressing Delete.
Though deleting with X by default asks for a confirmation, you can opt out of this by changing the keymap for Object Mode> Delete as commented by @sambler.


How to update my blender without losing all my settings on mac

Just copy the startup.blend and the userpref.blend to a different folder, update blender,  and copy the preferences back to the original folder. See How would I import/export Blender's preferences?


It there a possible way that I could scale all the objects individually?

Try simply selecting all your objects and scale the whole selection.
It doesen't work if the pivot point is set to "individual origin".
All the others options will scale your objects maintaining shapes and proportions


You can make your material (semi)transparent in Solid view.

Shading editor > Sidebar > Options > Viewport Display

Suzanne with two materials assigned.
One is opaque, the other is semi-transparent.


What kind of illumination to use to produce these 3D ball-and-stick atomic structure models? (specular reflection but no shadows)

A few steps that might help Cycles render like this:
Lighting:
I find it's usually best to adjust this first, on neutral-grey surfaces
A single key point-light, with ambient fill provided by a somewhat luminous World. The World has one color to contribute to the lighting, and another to appear in the camera, thus:

The size of the point-light will affect the size and softness of the 'ping' specular dot on the spheres.
Object visibility:
You've got to cripple Cycles on the objects, to prevent shadows being cast, and stop any diffuse bounce of light between them. Switching off everything bar 'Camera' visibility seems to work, in the Object Properties tab > Visibility panel:

Materials:
For convenience, a Principled shader:

.. with 'Roughness' adjusting size and softness of highlight, and maybe a tweak of 'Specular' intensity. A tiny contribution of 'Emission' in the base color, helps the World fill the away-from-light surfaces.
This sort of result:


What do the tools in options panel( like Tag Bevel )in edit mode do?

The options in the Options Panel for tagging edges are the same as the edges menu with only a slight difference that I can see. Most notably in Bevel and Crease, in that the weight added is always at 1.

Crease marks edges for use with subsurf, with a weight of 1
Bevel marks edges for use with Bevel modifier, with a weight of 1
Sharp will mark edges sharp for edge split modifier
Seam will mark seams for UV unwrap
Freestyle Edge Mark will mark edges for use with Freestyle

To use the Tag Bevel, Tag Crease , Tag Sharp, Tag Seam tool, it is as simple as selecting each edge with Ctrl + RMB


Blender 2.82 Fluid Simulation can't resume baking

Blender does not support fluid bakes that can be re-started from a different frame. However, in mantaflow, this is supported. You might want to consider installing mantaflow for blender unless you are already use it. (It would be weird if you are since you cannot restart your fluid bake.) You can download mantaflow here.


Bad quality mesh, Narrow tris as result of Ctrl+t (exporting stl file)

So here is what I did and it worked for me.

After I got the original mesh (left figure on top), I use Remesh modifier with mode set to Smooth. This way I got a very high quality mesh with only quads. When I triangulated the high quality quad mesh none of them became narrow.
However, the size of the .stl file becomes very large. Therefore, I use Decimate modifier to lower the number of faces and keep checking the mesh quality with 3D printing add-on.


Tank tracks/treads breaking when rotating hull

Edit 13th Feb 2019 - Added Blend file for a query in 'Blender Artists'.

-===============-

The answer is in the way it's all put together, particularly the Origin points.  The Curve, Tracks and Empty must all share the same OP.

The steps below (deleted) cured my original tracks that I'd made ages ago and like yours, suffered badly with the screw effect when rotated in the Z axis.

I did this one with a single track, and duplicated it after.

The Details -

Delete all parentage and also delete the Empty.

Select the tank tracks and remove the curve modifier.

"Apply" the array modifier as it stands.  (make it solid)

Set the cursor to 0,0,0 with ShiftC,

Select the tracks, press ShiftS --> "Selected to Cursor".

Select the curve, and do the same (ShiftS)

With the tracks selected again, replace the curve modifier.

Add an empty with ShiftA.

Parent the tracks to the Empty

Parent the Curve to the Empty.

That should do it - you can rotate and move the Empty now without ill effects...

If this hasn't worked the 3D cursor may have been inadvertently moved from location 0,0,0.


Should i parent the eyes to the mesh or join them?

Parent the eyes to the head.

Joining meshes is a lot more complicated. Their modifiers join up and often their cursor is lost. Also, joining eyes in games often makes them glitch.

To set parent to the eyes, first select the eyes, then the head, after that press "ctrl P" and select "to object".


Cycles and nodes, trying to use Diffuse BSDF as color source for Glossy/Subsurf Scattering BSDFs.. not working

You should use an RGB as input to both color inputs in your nodes, so changing one affects the other.


To have two independent handlers, select the vertice, press V > Free. Is that what you want?


How to move selected vertices on Z axis by 1mm

You can type in your transforms if you call the transform using direct shortcuts to begin with (G to move/grab, R to rotate, S to scale).

Just hit the key for your transform, here G, then the key of the axis you want to move in, here Z, then you can type the amount of transform you want and press ⏎ Enter.

Unfortunately, you can't write "1mm" and press ⏎ Enter: it only takes numbers and simple maths operations, it uses the units set in your scene settings.

Blender is set to meters by default, so for moving by one millimeter you will have to write 0.001 (with a dot, not a comma) and hit ⏎ Enter.
You can also just type in the new global or local coordinates of your object in the Transform input in your viewport's sidebar. You can even let Blender make the maths operations for your by putting your cursor at the end of the value you want to edit and write simple maths like +0.01 or -1, ...

TL;DR type GZ 0.001 and ⏎ Enter.

If you will often need to type in millimeters, then it will be faster for you to set the units to milimeters so you don't have to convert millimeters to meters all the time.

Head over to the properties editor, Scene tab (white triangle icon), Units tab, and change the Length unit to millimeters. This just changes how units are displayed, it does'nt change any scale internally.


How to get owner Mesh from a MeshEdge or MeshVertex?

In theory you could add default values - like inMesh=None, inVertex=[], to be compatible with python code that doesn't add the extra arguments. In reality that may still fail as blender uses mostly C/C++ code for internal data like vertices, and it only provides a thin python wrapper to access that data, so some areas will not work well with custom python classes.

The good news is that you don't have to do any subclassing as blender supports adding custom properties to many existing classes. While the vertex and edge classes aren't in that list you can add properties to the Mesh class.

A collection allows you to create a property that is a list of custom classes, this would allow you to have a list that holds as many extra properties as you want for each vertex.

A slightly adjusted version of the example in the api docs -

import bpy

class CustomVertex(bpy.types.PropertyGroup):
    name = bpy.props.StringProperty(name="Test Prop", default="Unknown")
    value = bpy.props.IntProperty(name="Test Prop", default=22)

bpy.utils.register_class(CustomVertex)

bpy.types.Mesh.my_vertdata = bpy.props.CollectionProperty(type=CustomVertex)

objdata = bpy.context.object.data

new_item = objdata.my_vertdata.add()
new_item.name = "Spam"
new_item.value = 1000

new_item = objdata.my_vertdata.add()
new_item.name = "Eggs"
new_item.value = 30


Where is the "Virtual Pixel Mode" option?

This setting has been renamed in the most recent builds (also Blender 2.80 series) to Line Width. You can find it in the Interface section. Possible settings are Thick, Thin or Auto:


Freestyle lines not showing up in final render

It seems that I solved the problem. I had "culling" turned on in the Freestyle settings to hide the renderings of lines that aren't visible to the camera. For some reason the camera doesn't see the model for mapping during the freestyle rendering.


Move one pose bone to the location of another in the same armature

Many thanks @batFINGER that got me heading in the correct direction, I now need to spend a few hours understanding why it works :) I modified the code from the example you linked to.

I've updated with extra comments and modified the code after I did some research to get my head around it, happy to take feed back I've misinterpreted anything

does not seem to need any additional calculations if it's a child of another bone but would be interested I'f I missed something there.

Mark

In my example from my question

bone y+1 is located at (0,1,0) in pose space but the local location
is (0,0,0) as that is where the bone is in edit mode.
bone z+2 is located at (0,0,2) in pose space but it's local location
is (0,0,0) as that is where the bone is in edit mode.
the armature object is at (0,0,0) world space

The translation (where the bone actually is in pose space) is stored in the first 3 rows of the 4th column of the 4x4 matrix reading down X,Y Z the other numbers define rotation and scale which I'm not looking at here.

so for y+1 the default matrix is
(1.0000, 0.0000,  0.0000, 0.0000)
(0.0000, 0.0000, -1.0000, 1.0000)
(0.0000, 1.0000,  0.0000, 0.0000)
(0.0000, 0.0000,  0.0000, 1.0000)

for z+2 the default matrix is
(1.0000, 0.0000,  0.0000, 0.0000)
(0.0000, 0.0000, -1.0000, 0.0000)
(0.0000, 1.0000,  0.0000, 2.0000)
(0.0000, 0.0000,  0.0000, 1.0000)

the armature world matrix is
(1.0000, 0.0000, 0.0000, 0.0000)
(0.0000, 1.0000, 0.0000, 0.0000)
(0.0000, 0.0000, 1.0000, 0.0000)
(0.0000, 0.0000, 0.0000, 1.0000)

The armature world matrix is important if you want to translate locations between world and local space as if it's not (0,0,0) then it needs to be added as an offset (and removed as an offset (inverted) as required.)

import bpy

#assume armature is active and has 2 bones in it called
# "y+1" and "z+2" at different locations
armature = bpy.context.active_object
y1_bone = armature.pose.bones["y+1"]
z2_bone = armature.pose.bones["z+2"]

#y1 is the bone we want to use as the target,
#multiplying 2 matrices is a dot multiplication i.e. each column gets multiplied with each row then added together
#it's not simple scalar with one value with just multiply the whole matrix so the below will produce a matrix
#that will add the armature world location to the y1 location

#if you want to place or align stuff outside the armature in world space then the following two pieces of code will
#take the armature world space offset into account but it's over kill for just moving about in the same local space

#this gets the world space
y1_world_matrix = armature.matrix_world * y1_bone.matrix

#this copies the default and calculates the local space
matrix = armature.matrix_world.inverted() * y1_world_matrix

#the above two would make more sense if say you were trying to place an
#empty in world space at the pose bones location.
z2_bone.matrix.translation = matrix.translation

#if it's just in local space you can remove the armature offset calculations
#above and just assign the translation
#of the target bone to the bone you want to move
#e.g. the below and the local space coordinates will update accordingly.

z2_bone.matrix.translation = y1_bone.matrix.translation


How to lock the view to prevent rotation of the view camera?

One way you might want to go about this would be to:

Align Active Camera to View with CtrlAlt + Numpad 0.
Lock Camera to View.
Select the camera and lock it's transformations.


Can you make a texture glow without it emitting light?

You can use the Light-Path node to determine when to use the emission shader.
in your case, you only want the camera to see the material as emission so use the is-camera-ray-output like this:

you can put basically any shader in the first slot, depends on how the object should look ie in reflections.


It may be some camera setting, so try a new camera.  I just had unwanted shimmering in  an eevee animation and replacing the camera helped identify the issue (clip length was too small).


Would it be possible to dynamically update the collection offset for instancing?

The Collection Utilities addon can batch update collection instance offsets from multiple selected objects.
Have in mind that it do not automatically "live update" center coordinates. It wont update collection instance offsets as you move the object, but it does make the process less painful by allowing to set offset for multiple collections at the same time each from multiple selected objects.
To use it install the addon Collection Utilities from Blender Artists thread or from Blender Market.
After activating it select a bunch of objects in the 3D View, go to the Objects menu at the top, Collections > Set Offset.

Selected objects should represent only the "main body" or center of desired collection instance offsets, since their center position relative to scene coordinates will be used to set the instance offset coordinate. Even if there are more objects in said collections those should remain deselected, otherwise they may negatively affect the desired outcome.
There are a myriad of other options to keep collection offset static for certain axis, like say always keep it at Z=0 despite objects being in the air.
Full disclaimer: Shameless self advertising, I created the linked addon.


In order to make it faster you could also assign the values directly to the location property:

import bpy
import mathutils

# get the object
obj = bpy.data.objects["Object"]

# store the current location
loc = obj.location

# adjustment values
(x,y,z) = (1.0,2.0,3.0)

# adding adjustment values to the property
obj.location = loc + mathutils.Vector((x,y,z))

Assigning and adding the values in one line:

bpy.data.objects["Object"].location = bpy.data.objects['Object'].location + Vector((x,y,z))

Simple and fast is adding the adjustment values to each axis:

bpy.data.objects["Object"].location.x += 1.0
bpy.data.objects["Object"].location.y += 2.0
bpy.data.objects["Object"].location.z += 3.0


It happens because when you want to sharp the angle on the top you create a new edge loop that also sharps the bottom one:

You can keep the topology as it is and simply slide the edge loop along the bottom (GG and you'll be good:


Well, game environment is a very complex process. So you won't find the answer in a forum, is like asking "How to use blender?".

But I can give you a starting point.

Game environment could be divided in two main parts "Terrain" and "Assets". Terrain is the process of creating the soil, mountains, rivers, the topology (in landscape language not mesh language). Commonly it isn't created as a .obj, .fbx, etc... file. To do the landscaping usually you use heightmaps (Unreal Engine 4 https://www.youtube.com/watch?v=E5pHoWfpfYw , Unity https://www.youtube.com/watch?v=qpEMhWgJTZ4 ).

Assets use the .obj, .fbx, etc... file format. They are used to make buildings, add rocks, trees, improve the landscape (because heightmaps are only the foundation of the landscape). They are usually separated by object, a car is one file, a building is one file, a entire city isn't usually a single file because it cost a lot of computer resources, you usually create 5 buildings and repeat them.

Nevertherless there are modular games, but thats a whole new way of creating maps.

Also, usually the maps aren't builded straight away, first you draw like pics of the map (but this isn't necessary), a top view map of it with the main objects (buildings, mountains... Important trees (not all)). Then you design the heighmap and then put boxes and simple meshes to the map as a concept map and then start creating the assets.

In conclusion, maps are created in the game engine editor with the assets that you create in a modeling application (like blender).


Getting a normal pass without normal maps (in Eevee)

I didn't find a solution so decided to write a script. It uses my scene setup so there's no point of pasting the whole thing but I'll paste a pseudo code that explains my approach
import bpy
import time

# disabling things
def get_color_management_settings():
  # returns some current values from scene.display_settings and view_settings:
  # look, exposure, gamma, etc
  pass

def set_default_color_management_settings():
  # sets various display settings to a zeroed state
  # so that the render wouldn't be affected by custom gamma/exposure/color profile settings
  pass

def set_color_management_settings(values):
  # sets various display settings to previously saved settigns
  pass

def disable_passes():
  # disables all the render passes but normal: breaks connections in compositing tab
  # renames 'normal' pass to 'geo_normal'
  # returns everything to restore to defaults:
  # file_output_node
  # render_output_node
  # outputs_arr: array of sockets that were connected
  pass

def disable_materials():
  # for each material
  # disconnects Material Output from the shader node
  # creates a blank Diffuse node and connects Material Output with it
  # creates and returns a dict with mat_name: [original_input_node, original_input_socket]
  pass

def disable_lights():
  # gets and returns all the lights that aren't disabled in render
  # also disables them in render
  pass

def disable_volumes():
  # gets and returns all the objects with Volumetric materials
  # also disables them
  pass

# enabling things
def enable_passes(file_output_node, render_output_node, outputs_arr):
  # re-enables original nodes connections in the compositing tab
  # renames 'geo_normal' pass back to 'normal' pass
  pass

def enable_lights(lights):
  # re-enables all the lights that were disabled
  pass

def enable_materials(materials):
  # removes temporary Diffuse nodes
  # and reconnects original shader nodes with Material Output node
  pass

def enable_volumes(volumes):
  # re-enables objects with volumetric materials
  pass

def main():
  timeStart = time.perf_counter()

  # getting active color management settigs
  color_management_settings = get_color_management_settings()

  # setting default color management settings
  set_default_color_management_settings()

  # disable links in compositing
  file_output_node, render_output_node, outputs_arr = disable_passes()

  # disable objects with volumentric materials: saves around 30% of render time
  volumes = disable_volumes()

  # changes all materials to use a black diffuse node
  materials = disable_materials()

  # disable all the lights: saves render time
  lights = disable_lights()

  # render
  bpy.ops.render.render()

  # re-enable everything back
  enable_passes(file_output_node, render_output_node, outputs_arr)
  enable_volumes(volumes)
  enable_materials(materials)
  enable_lights(lights)
  set_color_management_settings(color_management_settings)
  timeEnd = time.perf_counter()

  # render takes about 1 second for simple scene, about 7-8 seconds for complex ones on 2070s
  print(f"time: {timeEnd - timeStart:0.4f} seconds")

main()

The result: normals_geo.png with geo normals and correct gamma, normals.png that comes from default render setup:


Was Y-Axis IK Stretching removed in 2.79 RC2?

I also was fond of this feature, but sadly it won't come back. The reason and solution is mentioned here:


How to "Hide a Collection in viewport" but not "Disable in Viewport" via script in Python

You can hide the active collection using the following code:

bpy.context.view_layer.active_layer_collection.hide_viewport = True

If you want to hide more than the active collection you will have to iterate through the children of layer_collection

collections = bpy.context.view_layer.layer_collection.children

for collection in collections:
    collection.hide_viewport = True

Be aware that bpy.data.collections and bpy.context.scene.collection also allow to access the collections and set hide_viewport. However, since these do not depend on the active view layer, they apply globally and therefore activate Disable in Viewports.


Can I change the size of the camera view?

You can always maximize the camera view fit the current window by pressing Home

You don't need to leave the Lock Camera to View mode for this to work.


Blender's objects have three rotation values, rotation_euler, rotation_quaternion and rotation_axis_angle with the rotation_mode property defining which one is used.

If euler rotation is used and you want the quaternion rotation you can use to_quaternion() to convert it. Quaternion values also have to_axis_angle() and to_euler() if you need to convert the other way. The mathutils module contains some extras.

Note that euler values are stored as radians so you will want to use math.degrees() to get the degrees of each rotation. Both index and property access are available for euler and quaternion rotation values.

if 'Z' in bpy.data.objects['Cube'].rotation_mode:
    r = bpy.data.objects['Cube'].rotation_euler
    print(math.degrees(r[0])) # 0=X, 1=Y, 2=Z
    print(math.degrees(r.x))

    q = r.to_quaternion()
    print(q[0]) # 0=W, 1=X, 2=Y, 3=Z


Options are missing in the Specials menu

The options available by pressing W are context sensitive -- they differ depending on what mode you are in, i.e. Edit mode, Object mode, etc., and also what type of scenario you are in. For example, if you are in Edit mode with a mesh object, you will get different Special Options than if you are in Edit mode with a curve object.


When I create a mesh and try to select a previous mesh, it selects them both as if they were one object

If you add a mesh while in Edit Mode, the mesh will be part to the selected object. In an object you can have many different meshes, even if they don't share any vertices.

If you want them to be two different objects, exit Edit Mode add the new mesh while in Object Mode.

Anyway, you can select the added mesh and separate it (Press P).

For a detailed explanation on the difference on creating objects in edit mode and object mode read:
Why can't objects in Edit Mode have their own name?


Adding lights to selected objects with python?

import bpy

for obj in bpy.data.collections["Collection"].objects.keys():
    bpy.ops.object.duplicate(linked=True)
    light = bpy.context.active_object.name
    bpy.data.objects[light].location = bpy.data.objects[obj].location

This should do the trick, make sure you create a light first (this will control all the other light) and have it selected. Also you want all your light fixture objects in the same collection named "Collection".


I can't scale the size of UV texture image

Looks like you have 2 UV sets. So to use one of them put UV map node in material, and select right one:

Then, connect UV map node to textures:


How to place a single crisp element as an alpha while sculpting?

To do this only with sculpting add the logo as the texture mask to the sculpting brush, switch Stroke method to Drag Dot and draw on the object's surface.

The texture defines a pattern according to which the brush is painting. Drag Dot stroke method will make brush draw only one dab preserving pattern of the texture.

Note that depending on the case you might need to continue sculpting with other stroke methods (use E to change) to bulge the logo out of the surface as desired. And obviously this model will be highpoly which is better to retopologize using certain methods.


How to extract the normal map of an object?

You can access the normal data for your mesh object via the Texture Coordinate input node. From there you can manipulate the vector data with various other vector nodes.


How to compile template_list with some object in scene 2.8

Edit of previous.

From the related answer to one of your previous question, edited to display all objects in the scene collection.  (Class names still reflect material based nature of original)

Compare to original, and you'll see it's minimal change to display one collection or another.

import bpy

from bpy.types import PropertyGroup

from bpy.props import (
    CollectionProperty,
    IntProperty,
    BoolProperty,
    StringProperty,
    PointerProperty,
)

class MATERIAL_UL_extreme_matslot(bpy.types.UIList):

    def draw_item(self, context, layout, data, item, icon, active_data, active_propname):
        scene = data
        ob = item
        #print(data, item, active_data, active_propname)

        if self.layout_type in {'DEFAULT', 'COMPACT'}:

            layout.prop(ob, "name", text="", emboss=False, icon_value=layout.icon(ob))

class SCENE_PT_materials(bpy.types.Panel):

    bl_label = "My label"
    bl_idname = "SCENE_PT_materials"
    bl_space_type = "VIEW_3D"
    bl_region_type = "UI"
    bl_category = "My Category"

    def draw(self, context):

        scn = context.scene
        layout = self.layout
        col = layout.column()
        col.template_list(
            "MATERIAL_UL_extreme_matslot",
            "",
            scn,
            "objects",
            scn,
            "active_object_index")

classes = (,
           MATERIAL_UL_extreme_matslot,
           SCENE_PT_materials)

def register():
    for cls in classes:
        bpy.utils.register_class(cls)

    bpy.types.Scene.active_object_index = IntProperty()

def unregister():
    # fill this in.
    pass

if __name__ == "__main__":
    register()

To sum up the changes, The object that owns the collection is scene the collection "objects" -> scene.objects its item will be an object.

The active index is scene.active_object_index which I haven't set to anything.  Something like

scene.objects[:].index(context.object)

will set it to the active object.


Blender 2.78 cycles out of memory problem, in both cpu and gpu

If you sculpted, there's a high chance your face count is extremely high, and 8GB is not really that much ram. You can try to decimate the mesh (decimate modifier) and see if it will stop crashing and render with a lower poly count.

This will probably not be the accepted answer, but might help.

EDIT: If you are using subdivision, check that the view and render division levels are the same, since if you have a higher render number when you see it in the viewport its what you want, but when you render you get an exponential number of faces.


Actions (animations) and FBX are a bit tedious… Think what you want is 'scene' animation export (as in, only get 'active' action applied to animated objects)? In this case, you should disable 'All Actions' (and probably also 'NLA') options from Animation tab in FBX export settings.


A closure is a computer science term for a package consisting of a function call and any other information (concrete values of arguments, etc.) needed to execute it later, AS IF in the current context.

In OSL, this is the data type of the thing that the shader network hands to the renderer to describe the properties of a surface or volume at a particular point.

You can think of it as a BSDF (although it can include other information that the shader can pass to the renderer). But the BSDF is not evaluated at the time that the shader is run -- instead, the renderer runs it later, and in fact internally there is not a single method associated with it, but rather it knows how to do a number of things, like choose sample directions, evaluate the amount of light scattering from one direction to another (with supplied with those directions), and so on.

An OSL shader can assemble a closure out of built-in "closure primitives" -- a closure may specifically be a weighted sum of the primitives -- but the actual primitives may not (currently) be authored in OSL itself. They are a part of the renderer, largely because their correct and efficient implementation seems to need to reach deeply into the guts of the renderer internals, which is precisely what OSL shaders are NOT supposed to be concerned with. Each renderer will document a number of BSDF closure primitives that it supports, which may vary from renderer to renderer. At present, there is not a strictly dictated list of which BSDF primitives you can count on in OSL, partly because BSDFs are still a hot research topic, with new and better ones getting published all the time. It doesn't seem stable enough to enshrine in the OSL language quite yet.


Error when changing materials in source file of linked objects

This is normal behavior and expected as far as I know.

The destination file where you linked from saves both the group you linked to along with the data contained in that group. That means objects, materials, image textures, animations, particles. In doing so it saves the link to said group but also a reference to the internal data.

If you change the linked file, when reopening the master those references will be missing from the group, and hence the warning you get. This is however expected, and if you save the master file, close blender and reopen, the broken references should be gone and so should the warning too.


Alpha not rendered in movie in the Blender Game Engine

S O L V E D

The movie must have an alpha channel.
This is how to obtain an alpha channel in a movie by using Blender Video Editor:

Properties(Output section):

File Format - FFmpeg video

Container - Quicktime

Codec - QT rle/QT ANIMATION

Once you are done, you will see that next to BW and RGB you now have RGBA.
Your movie will be rendered with an alpha channel and in the game it will work perfectly.


Combine desired vertices into Vertex Group
Add a Child Of constraint to the bone
Set this Vertex Group as a target in constraint settings


Why can't I plug in vertex normals to rotation of Object Transforms Output

Vertex normals are vectors (transparent blue) and Rotation of object is in 'Euler' format (transparent purple). So, you have to first convert Vertex Normals Vectors to Euler then you can plug into the rotation socket. There are two nodes in animation nodes which can do this, 'Vector to Euler' node and 'Direction to rotation' node. However, 'Direction to rotation' node has many controls so you can choose 'guide axis (here is 'x')' and 'track axis (here is 'z')'.

Vector to Euler Node

Direction to Rotation Node

:)


Hide Floor overlay from viewport render in Blender 2.8

It's not automatic but I've spent a good amount of time searching for this myself and found out that you can toggle on/off all overlays (grid, outlines, etc) by clicking the overlay icon.

I know this is pretty late but I figured I'd post this in case. It's still annoying but it's better than having to uncheck/check each overlay.


The refraction algorithms in Eevee (which the glass shader uses either) lower resolution of everything behind refracted surface to speed up render and performance - this is what causes the bluriness. If you don't need a refraction distortion, the solution as it has been already mentioned is in using Principled BSDF. Increase "Metallic" all the way up to 1 and plug in Fresnel node into Alpha socket - you will get a fake glass material without lowering a background resolution. Anyway if you need a physically correct refraction I'm afraid the only way is to use Cycles.


There's two ways to change object colors in real time: through Object Color material's option, or through material node's Hue/Saturation (available in realtime only in UPBGE).

Object Color

This one is pretty simple:

Enable the Object Color checkbox on the desired material.
Change the Object Color in realtime by animating it.

Example file:

Hue/Saturation Node

This one is a bit more complex, but a lot more powerful and with better results. Remember this one ONLY is possible in realtime on UPBGE.

Go to Node Editor and enable the node compositing for the desired material.
Add an Hue/Saturation node between the Material node and the Output node.
Separate the RGB colors of the object and set the hue value to the red value.
Animate the red color on Object Color to change the hue in realtime.

Example file:


I have opened your file and checked that you have 26 overlapping vertices. try going to mesh then clean up - merge by distance.


Create a 12 vertices circle.

Enable the Snap option (Vertex mode), or just press ctrl when you'll need it, enable the Auto-Merge option.

Duplicate your circle, with Snap and Auto-Merge it will snap and merge the vertices. Delete the inner vertices, bevel the 3 central vertices with a shiftctrlB.

Extrude up, create horizontal edge loops with ctrlR. To make sure you don't have flipped normals, press shiftctrlN. Back in Object mode, move the origin to the geometry.

Give your object a Simple Deform modifier, Angle 120°, Axis Z.

Give it an Array modifier, enable the Merge and First Last options.

Give it a Subdivision Surface modifier, and also smooth it: Object > Shade Smooth.

To make it follow a curve, give it a Curve modifier. Make sure that the curve's origin is at its beginning, put the object at the same point.


Is there a way to flip a UV without flipping the normals?

Select all in UV Edit window and type SX-1 and enter


How does a texture image file get mapped on an OBJ model?

The reason is because the capsule object already has a UV Map, as shown in the image below.
The OBJ file format keeps the UV coordinates, which are assigned during unwrapping of your model in the UV space.

The answer to "How do we know where the first pixel on the top left corner of the texture file will stay on the OBJ model surface?" is unwrapping. Basically, when you unwrap your model, you unfold it so you can have a 2D projection of it. A simple object like the capsule is fairly simple to unwrap to a single part. But if you have a more complex object (such as Suzanne), you have to separate your mesh in several parts by creating Seams, and unfold one part at a time, to get a result like this:

This procedure is fundamental to apply textures on your model: any other texture will be applied based on the UV map coordinates that you have created. My suggestion is to use a checker color grid while you unwrap your model, so you can have a nice preview of how the textures will be applied on your model:

Keep in mind this concept: any other texture will be applied in the same exact way the color grid is applied. You have to take control of the distortions: it's normal to have some distortion while unwrapping your model (because you convert your model from 3D to 2D). Adding seams reduce a lot the distortions on your unwrap. Anyway, common mistakes at the beginning are:

stretched and/or squashed uvs (first image below)
not uniform scale of the projections (second image below)

The model is correctly unwrapped when you see perfect squared numbers of the color grid texture over all the parts of your model.

Useful resources:

Darrin Lile - Basics of UV Map
Darrin Lile - Character UV Map


It looks like you are very far from the center of the world. You are basically loosing precision as you move away from the center. This is because blender uses floating point numbers for things as location and these can store more decimals on lower numbers and fewer at higher, moving the decimal sign but keeping the number of possible digets. Somewhat simplified...

Anyway, move you scene closer to the centre and you should be fine.

This problem is not related to platform and not unique for Blender.


How to create a seamless animation loop in Blender?

I usually key the first frame on frame 0 and output from frame 1 onward. This has to date never failed me.

Maybe your problem has a different source, share the file if you can.

Edit:
I rendered out the image sequence, then composed it. First, I assumed your hickup was just a slight buffering error from your video player, but then I compared the first and the last frame from the output, which were identical, causing a 2 frame hold.

Your first and last frame of the loop must not be identical, or you will get these slight stutters. An easy solution to that problem is to either:

push all keyframes one frame forward, so they are outside of the render area,

or shorten the render interval by one frame.

So I pulled the last frame and rendered a video. Seems gone now.

https://youtu.be/kwSuWkUF8k4


How can I flip the direction of an animation

You can convert your animation to an action strip in NLA Editor and use strip's properties to reverse animation:

Note that after this conversion you won't be able to edit your animation, i.e change keyframes' position or add new ones. So you may want to create backup of your mesh with editable animation.


How can I emulate moving water in the BGE?

The only way that works well and looks great in the BGE, is creating an animated water texture.

Having real geometry to create displaced waves in the game engine would look cool, but it is very memory intensive and would cause your game to lag.

To create an animated texture for the water, there are quite a few steps. Here is a video that describes the technique used to create the water used in the Blender Game "Yo! Frankie".

Video Summary:
Step by step tutorial that shows how to create realtime animated water for the BGE using animation maps.


Rendering an animation only returns blank images

Try removing a strip from the Video Editor.


Object created from Sapling addon not exported properly to FBX

I found the problem after an hour of work :D The sapling add-on wasnt creating meshes.. it was creating curves..  So i tranformed the the curver into a mesh and the i exported it and it was done :D


I'd suggest if  you are going to use global variables, then run script as a module, otherwise would need set up Boolean properties on object and use them to keep tabs on U, D, L, R.

Slight change to code, the controller is automatically passed to the module, which needs to have the .py extension.

import bge
U = False
D = False
L = False
R = False
def main(cont):
    global U
    global D
    global L
    global R

    own = cont.owner

    keyboard = bge.logic.keyboard

    wKey = bge.logic.KX_INPUT_ACTIVE == keyboard.events[bge.events.WKEY]
    sKey = bge.logic.KX_INPUT_ACTIVE == keyboard.events[bge.events.SKEY]
    aKey = bge.logic.KX_INPUT_ACTIVE == keyboard.events[bge.events.AKEY]
    dKey = bge.logic.KX_INPUT_ACTIVE == keyboard.events[bge.events.DKEY]

    if wKey and (D == False):
        U = True
        D = False
        L = False
        R = False
    elif sKey and (U == False):
        U = False
        D = True
        L = False
        R = False
    elif aKey and (R == False):
        U = False
        D = False
        L = True
        R = False
    elif dKey and (L == False):
        U = False
        D = False
        L = False
        R = True
    # test print
    print(U, D, L, R)
    if U:
        own.applyMovement([0,0.2,0],True)
    if D:
        own.applyMovement([0,-0.2,0],True)
    if L:
        own.applyMovement([-0.2,0,0],True)
    if R:
        own.applyMovement([0.2,0,0],True)


To preview your clip in the 3D viewport, set it as a background image/movie.

To render your scene, add the scene as a layer in the VSE above your movie clip. Set the scenes blend mode to alpha over.

Alternatively to the VSE you could combine your clip and 3D scene in the compositor. It is the same principle.


What does Save As Render do to the image when saving it?

Save as Render will apply the Display Transform set on the Color Management section.

Without the Display Transform the image saved will be saved unprocessed, maintaining the Scene Referred Values, up to the inherent limits of the file format chosen.

For images that require linear values (or non-color-data) leave that box unchecked. (For example when saving normal or depth maps)

Images meant to be saved as Display Referred can be saved as render, so that all color transformations are applied and baked into the picture.

As an example, see how this two images produced with the same scene have different values depending on how they were saved:

There are some notable exceptions to this rule as follows:

The DPX format is unfortunately hard coded to always store a Blender specific transfer curve. It skirts around OCIO in unreliable ways.
The EXR format will always store the internal reference buffer as float or half float. Even with the check box selected, EXRs will not bake any colour transforms, desired or not.
Most other file formats follow the above rule of thumb for display referred formats.


How to hide the armature to do UV unwrapping?

You could use one of two approaches to do this.

Layers
Object Hiding

Layers

This is what I would recommend.

Layers let you control at what level an object is "visible" much like a layer in a program like photoshop. You can enable or disable layers and move objects to different layers. To move an object to another layer you only have to use the M key by default

Simply select your Armature object(s) and hit M then you can move to any of the layers you want. The little orange dot in the layer selector shows which layer the active object is on.

You can read more about layers here and since you might be new, it is very good to understand how they make working with blender easier.

Object Hiding

If for some reason you cannot use layers, you can hide the objects you do not want to see while not moving them to another layer. You can do this by selecting the object(s) you want to hide and pressing H.

Once this is done you can no longer see / select the object from the 3d view. The object will still show up in renders.

If you want to see all the objects you have hidden, you can press Alt + H.

If you only want to unhide specific objects, you can use the outliner (the tree view in the top right) and click on the eye icon to unhide hidden objects.

You can also use other shortcuts to hide objects en masse etc. This post also details one way you can hide all objects EXCEPT the selected object

Comments:

You can use both object hiding and layers together but turning off a layer makes it get hidden from rendering.

Hiding an object but keeping its layer visible does not make hide it from rendering.


From the experience with my camera at home, zooming in on a starry sky from 28mm up to 400mm the stars definitely become bigger, too - there are still no observable details, but zooming in makes the "blotches" larger. And another thing, zoomed in you will see more stars than zoomed out, because the much smaller ones are magnified as well. Of course this is also depending on how fast your lens is, if it doesn't get enough light zooming in results in darker, less visible stars. But the size definitely changes.
So if you zoom in on an object that's further away instead of moving towards it, the relative position of the starry background doesn't change much, so you're right that you'd see fewer stars (of the bright ones you're seeing zoomed out, but more darker ones might appear).
To avoid having pixelated stars I'm not using an Environment Texture for this, I'm creating a fully procedural background with muktiple Voronoi Textures at different scales. Plugging the Distance output into a Color Ramp you get very small circles if you set the ramp's left slider to white, the right one to black and bring it very close to the left. I multiply the ramps' outputs with different values so that the larger stars are brighter than the smaller stars.
The best is to decide how large you make the different star sizes when zoomed in. If they become invisible when zoomed out, you might make them brighter by multiplying with a higher value or compromise by tweaking the size a little bit. Here is a typical setup I use:

Of course you can add even more Voronoi Textures with varying sizes or even colorize the stars with this. That's one of the reasons I'm using 4D instead of 3D in the voronoi settings. If I like to have different colored stars but at the same size, I duplicate the node and change the W value.


Problem at Selecting Points after Extruding

There are several things to keep in mind in your case.

First, it seems you're holding Ctrl while selecting vertices. This means you select these vertices and every vertice located along the shortest path between them.

To select only 2 vertices you should hold Shift while clicking on the vertices.

Second, you have double vertices in your mesh, at least those which are selected. Select all, use W and in the menu choose Remove Doubles. Read similar question here.


How to reset the center of rotation of the 3d view when it is not the center of the view

To re-center the 3D view pivot to a more convenient point, select a vertex (or series of vertices) near the area you're working on and, in Edit Mode, hit Numpad . (the period key on the number pad). The view will now rotate around said element, avoiding those situations where it's nearly impossible to work on an area because you can't get a good look at it (when it rotates too far for you to focus on that area easily). You can also use this shortcut (called "View Selected" in the keymap) in Object Mode to fit the active object in the view and pivot around it.

You'll have to do this every so often as the geometry of your object changes (or the view behavior otherwise gets weird). I recommend using "Rotate Around Selection" under View Manipulation in File > User Preferences > Interface because it makes rotation behavior more predictable.

This shortcut is also helpful when dealing with this problem:Ctrl + Shift + MMB  (Dolly View) changes the view center (which the API calls the "Location" component of the 3D view), which is the source of the problem.

Also read this, it explains how the 3D view works and why your problem occurs (Credit to iKlsR for the link):
Why does the zoom sometimes stop at a point?


Texturing mesh used smart uv project makes weird lines

Possible duplicate of:
Texture painting margin size
Texture Painting - Black Artifacts

Note that you can add margin with Pack Islands with pressing F6 after do Pack Islands. I always try 0.03 and works 100% fine.


How to enable the Alt + right click shortcut (select edge loop) in Lubuntu?

To disable the shortcut on Lubuntu open the file manager and at the path line copy and past this: ~/.config/openbox/
Open the file lubuntu-rc.xml (you can use Leafpad) and delete the following lines:

  <mousebind button="A-Right" action="Press">
    <action name="Focus"/>
    <action name="Raise"/>
    <action name="Unshade"/>
  </mousebind>
  <mousebind button="A-Right" action="Drag">
    <action name="Resize"/>
  </mousebind>

Then save the file, open the terminal (Ctrl+Alt+T) and type this:

sudo openbox --restart


Short answer: yes.

Your best bet is to start by creating an animation for firing once.

Then for things like the muzzle flash you can loop that animation (either using multiple strips in the NLA, or a cycles modifier on the fcurves of its animation).

For the bullets, you probably want multiple objects in case multiple bullets are in-camera.  They can share an animation that is shifted in time using NLA strips.

The casings will be similar to the bullet: having multiple objects that share an animation using NLA strips displaced in time.

(edit:)

Keyframing the hide_render property (the camera icon in the outliner) is a popular technique for making something appear/disappear (bullets, shell casings, although you could also conceal them inside the gun's polygons where the camera can't see them)


How to create real tilt-shift lens blur in Blender?

I want to provide an alternative to cegatons answer. This is an attempt to reproduce the behavior of a real Scheimpflug. The focus plane is supposed to "cut" objects. When you create the focus plane in post however, it doesn't intersect with the objects. To mimic this behavior, follow these steps:

Create a Cube in your scene, name it "gradient Cube" or similar, it will control the falloff of the gradient. In the object tab, disable all cycles visibility options (camera, diffuse, ..., shadow) to make it completly invisible for the renderer. Create a second RenderLayer ("gradient"), add a material to it, with the nodesetup shown in image 1. In the TextureCoordinate node choose your gradient cube as object input.
Position the cube so that the middle grey (~0,5) of the gradient follows the desired Scheimpflug. The farthest visible point from camera should be black (0), the neares white (1).
Render the image. Save each RenderLayer to OpenEXR, 32 Bit float. I added the contrast only for illustrating that the gradient now "cuts" the objects. The actual gradient is very flat.
I would recommend not to use the blender Defocus. It produces horrible artifacts. I used Nuke non-commercial, which is free to download/use with some restrictions in functionality. Read both renderlayers. Shuffle them together, take RGB from the beauty pass and shuffle the R channel of the gradient layer to Z(depth). Insert ZDefocus, choose the focal point. To round it off, introduce some grain. (the out-of-focus areas looked too smooth)

The result with animated gradient-cube:


Rigid Body and Invisible Object Collision

As of now, I see no reason why you couldn't add a Transparent BSDF shader to the smashy object.

View:

Render:

Animation with transparent smashy thing:

My .blend file:

Also, as lemon points out, in the Properties panel > Object tab > Cycles Settings dropdown, you could uncheck the Camera checkbox. If you follow this course, though, you will have a disembodied shadow.

As Nathan Craddock adds, you can also turn off Render Visibility in the Outliner.


How to resolve the Z pass when rendering with subframes?

Your Normalize Node is scaling the values so they range from minimum to maximum for each part individually. Leave it out and you should be fine. You could use a custom normalization scaling that is predefined and does not depend on the maximum and minimum of one subframe, or scale the Zpass of the whole image after merging.


Is it possible to animate a single mesh with multiple armatures at once?

You can't parent a mesh to multiple armatures, but you can have multiple armatures deforming a single mesh. As armatures can have multiple bones, it wouldn't normally be needed.

I don't think that any of the following will export to Unreal or Unity, so this would only relate to animations to be rendered using blender  -

Parenting the armatures to each other will only move them together in object mode. Within blender, you could use a child of constraint to have multiple armatures move as one in pose mode when desired, you can animate the influence to turn it on/off. This also allows you to parent it to different armatures or bones at different times. Other constraints may also give a desired result.

For an object, you can add as many armature modifiers as you want, each modifier then uses a different armature. Instead of using the Parent->Armature Deform options, you will want to add and set each modifier manually. The catch is that the bone names are used to link bones to which vertex groups they move, unless you are using bone envelopes, that means the armatures will need to use unique bone names between them or multiple bones will move the same vertices.


Set axis for spin from custom orientation

From m = bpy.context.scene.orientations[0].matrix

Transformed X, Y and Z axis (in world coordinates) are:

x = m * Vector( (1, 0, 0) )
Y = m * Vector( (0, 1, 0) )
z = m * Vector( (0, 0, 1) )

If you need it in an object local coordinates:

x_local = obj.matrix_world.inverted() * x
y_local = obj.matrix_world.inverted() * y
z_local = obj.matrix_world.inverted() * z


Weird artifacts when rendering on Nvidia GPU

Since you are reducing the z axis to 0 the top and bottom faces are z-fighting with each other.
I get the exact same thing on my end, by the way, and I'm also perplexed as to why the CPU doesn't face this issue.
I tried to work out a solution using Backfacing, but failed.
Instead of leaving the z disconnected you can divide it by some large number and get a workaround.


Cycles, Ocean Modifier and Dynamic Paint

I saw your question a while ago and thought there was no fix as I was having the same problem but then I figured it out. Hopefully you have by now but if you haven't then this is how.

First I take it you followed this tutorial:

https://www.youtube.com/watch?v=11F1NRpqrzY&t=2s

It's really useful and shows you how to get an object to float using dynamic paint (brush and canvas) and then copying the location of the object you want in a moving sphere. The result is often good and very believable, he even includes how to get foam around a single object but he doesn't show you how to add more objects to your ocean.

You should watch that before doing anything

To answer the question you need to add more canvases. As you can see in my example I have many many canvases for a complicated scene in which a boat is towing equipment through the ocean

For every object you wish to float you must

1) Create another sphere like in the youtube video and place it so it's intersecting with the ocean

2) Add the sphere to a new group (ctrl G) (call it weight + object name)

3) With the sphere selected click the physics tab and select brush, make sure paint source is "mesh volume"

4) Add a new canvas to the ocean modifier by pressing the plus button next to your already existing canvases

5) Change surface type from paint to WEIGHT by changing (My examples say "surface weight"). Click on fade and turn time to 1

6) In Brush group select Weight + object name

7) In Vertex group make sure dynamic paint is outputting by pressing the plus

8) Select object you wish to float, go constraints tab then add copy location & copy rotation. and select vertex group from what you outputting in step 7.

Now you float.

You can add foam to the object in two ways, add your object that you have just made float to the same group as the object already floating, click physics tab and click dynamic paint -> add brush and the two objects will both have the same foam properties. Or you can add it to a different group and add ANOTHER canvas. Instead of changing it to weight you change it to paint.

Once you have your head round this you'll quickly be able to start using the wave and displace modifiers too which will add so much to your animation


Multiple object animations not exporting to GLB

Solved! The NLA tracks needed to be named the same, not the action strips. Also they can't be left with the default names - although they may be the same. The NLA tracks have to be renamed to identical names.


Is there a way of easily identifying which mesh face a UV face corresponds to?

You can eneable the "keep UV and edit mode mesh selection in sync" button, in the UV editor


I got it, you need to set up a hotkey manually, this is not accessible from the right-click menu:

Hit F4 to get to the Settings Menu and go to Keymap
Open 3D View > 3D View (Global)
Scroll to the bottom and hit the + Add New Button, to add a new Key-Binding
Enter wm.context_toggle in the Context Field
The Context Attribute Field will now appear. Set it to space_data.overlay.show_overlays
Don't forget to save your Hotkey Settings


Idle Chit-chat

The best way I could think of doing things is to create two separate meshes: the tooth and the decay. Using my method, I created this:

Teeth Creation

I started by modeling a simple tooth. I included the mesh for this image, but deleted it later. Do not worry about it. I also set shading to Smooth in the Tools bar. I then added a material and set the Diffuse color to hex FFF2FE. I did not change anything else in the material.

After that, I added a sphere. I set the shading to smooth. I moved it down to Z: -1.4334 and scaled it so X, Y, and Z were all 1.189. This makes it so just some of the sphere is visible near the gunky area in the reference photo. I added both a Subdivision surface and Displace Object modifier. I set the settings to these:

Important! Before you can set the settings in the Displace modifier, click + New to get a new texture. Name it "Disp."

Next, I went to the Textures tab in the Properties panel. Make sure that  is selected at the top of the tab. Select Displace from the top drop down menu and Disp if it isn't already selected in the next drop down menu. If it is not already set, set the Type: to Clouds.

With the sphere still selected, go to the Materials tab and add a new material. Set the Diffuse color to hex C29F75. Change the Specular intensity: to .1.

Lighting and World setup

Move the lamp infront of the tooth. I used X: 0.0194096, Y: -4.1363487, and Z: 2.4681318. In the Object Data Properties panel tab, set Samples: to 5. Go to the World tab. Set the Horizon Color: to hex 595A66. Check Environment Lighting. Set the Energy: to .4, and in the drop down menu, select Sky Color.

Last Words

I assumed here that you were using BR. If you use Cycles, refer to Duarte Farrajota Ramos's answer. I might tweak the lighting to get a better result. Finally, here is the .blend file:


Your camera Clip End is to low, increase it a bit:


How to rotate a curve to show on a different axis?

Rotating
You can rotate objects with R:

In the above gif I pressed R (rotate) X (axis to rotate on) 90 (degrees to rotate). I then did the same, pressing Z instead of X to rotate around the Z axis.
There are several other ways to rotate objects, see the wiki for more detail.
Align to view
Note that when you first add an object, there is an option to align it to the view: