Saving intermediate stages during rendering

Unfortunately, it's not possible to automatically save multiple stages of the progressive render. The nearest you can get to this is to render multiple images with a small number of samples and then combine them to produce a result - similar to the progressive render.

To achieve this you need each 'frame' to be rendered with different 'seed' setting. The 'seed' is the source of the 'noise' in the render. Different seeds produce different noise and when these are combined it results in the noise effectively cancelling out. The seed for the render is available in the Sampling render properties. Alongside the Seed value is a clock icon - clicking this will use the frame number as the seed and this will result in a different seed being used per frame.

As an example, here are multiple frames rendered with 1 sample each, each with a different seed :

Combining multiple images is most easily achieved using tools outside Blender - such as ImageMagick. To combine multiple images using ImageMagick you can use the following command line :

magick convert *png -average result.png

This produces the following result :

To produce the 'progressive' result (multiple images at different stages) you would simply combine fewer images for each 'earlier' stage in the process (for example, images 1-20, images 1-40, images 1-60, etc. for progressively more detail).

Note, however, that better results will be produced from the 'actual' progressive render due to losses resulting in each individual frame - for example, values outside the 0.0 to 1.0 normal range are not stored in individual PNG renders. This will result in the loss of some details such as caustics.


How to change object scale in bge via the arrow keys?

First you should never use bpy with bge.

Your script should look like:

import bge

def main():

    cont = bge.logic.getCurrentController()
    own = cont.owner
    pixUp = cont.sensors["Keyboard.001"]
    pixDown = cont.sensors["Keyboard"]
    factor = 1
    if pixUp.positive:
        own.localScale[factor]*3 # the same as own.localScale[1,1,1]
    if pixDown.positive:
        own.localScale[factor-1]*3 # the same as own.localScale[0,0,0]
main()


Gizmo (manipulator) is missing for some reason

I was clicking Space bar by accident and i didn't realize it is going frame by frame until i saw the info datum that shows top left ... Fixed by clicking the space key


How to find the function and the menu (or button) corresponding to a shortcut (knowing only shortcut keys)?

By searching for it
You can look through Blender's UI and check all the menus. It is often possible to find a lot using this obvious and simple way, or you could also search the key map in the user preferences(F4 -> p):

Note that you can have one hotkey that does different things depending on the context(what editor or thing you hover your mouse above, what mode you are in, what you have selected and things like that).


How can I connect multiple bones to one?

Bones 1,2,3,4,5,suspens, are all child of bone "control", which can move up and down and rotate left/right.

Suspens has a "stretch to" constraint pointing to "car" bone. Bones A,B and C have a "stretch to" constraint pointing at 2,1 and 5.

Car and Car2 are parented also.


How can I change the way my cup looks (from top view)?

I'm not sure there's any easy trick, what you could do is create a circle to have a reference, give your cup and coffee a Lattice modifier with the same lattice object, and bend the lattice until you get a round object?


Is this add-on "Extra Lights - Photometric Lighting For Blender" compatible with Blender 2.90.1

Yes, it is compatible with Blender 2.90.x. At the time of writing, this add-on will work in Blender 2.82 and later. The current version of the add-on can be found on GitHub, excluding the presets that are in the paid version.


How to make a cylinder smooth without smooth shading?

You cannot technically do this in blender. However, you can increase the number of faces to the point where the printer’s resolution dot is bigger than the width of the faces. I think this is impractical however, and recommend you print it out a little rough, then do some sanding work.


Choosing right context for property in viewport panel

Okay by looking at How to create a custom UI? I could figure it out
import bpy
from bpy.props import BoolProperty, PointerProperty
from bpy.types import PropertyGroup

class HelloWorldPanel(bpy.types.Panel):
    bl_label = "Hello World Panel"
    bl_idname = "OBJECT_PT_hello"
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_category = 'Tool'

    def draw(self, context):
        layout = self.layout
        row = layout.row()
        row.label(text="Hello world!", icon='WORLD_DATA')

class QuickRenameProperties(PropertyGroup):
    test_bool: BoolProperty(
        name = 'Test',
        description = 'Test description',
        default = True)

class QuickRename_PT_Panel(bpy.types.Panel):
    bl_space_type = 'VIEW_3D'
    bl_region_type = 'UI'
    bl_label = "Quick Rename"
    bl_category = "Tool"
    bl_parent_id = "OBJECT_PT_hello"

    def draw(self, context):
        layout = self.layout
        layout.use_property_split = True
        layout.use_property_decorate = False
        scene = context.scene
        mytool = scene.my_tool

        row = layout.row()
        row.prop(mytool, 'test_bool')

def register():
    bpy.utils.register_class(HelloWorldPanel)
    bpy.utils.register_class(QuickRename_PT_Panel)
    bpy.utils.register_class(QuickRenameProperties)
    bpy.types.Scene.my_tool = PointerProperty(type = QuickRenameProperties)

def unregister():
    bpy.utils.unregister_class(QuickRename_PT_Panel)
    bpy.utils.unregister_class(HelloWorldPanel)
    del bpy.types.Scene.my_tool

if __name__ == "__main__":
    register()


Has anyone else experienced problems using Boolean - difference in version 2.90.1

I found the answer was to apply the Boolean Difference in Sculpt Mode, it did not work in Edit or Object Modes. This only worked for the cube scenario, when trying the same with cylinders it still does not work correctly.


In your example the difference between the two is caused by the multiply node. If you use an invert node instead, they are identical:

I don't think there's really any reason to use one over the other, but of course with the layer weight node it takes less time to set up.


Non-destructive modeling approach to cropping images

The edge slide tool can do this very easily without the limitation of the vertex slide tool. Just disable "clamp" and enable "correct uvs" to use it. Beware, of extending past image bounds, however, because it will not clamp it at the image bounds manually.

Furthermore, it would be easier to "crop" using this than the loop cut tool that you are using.


How Can I Quickly Create Embossed Text in the Style of a Label Maker

If you don't need extra geometry, just use an image as a bump map to fake the relief. This will allow you to keep the vertex count low, as all you need is a simple plane.

Or you can use the image as displacement if you need real geometry.

Note that, in order to get good results, you need a lot of subdivisions.
Of course you will need the correct dymo font to create the texture:
https://www.fonts4free.net/dymo-font.html#:~:text=Dymo's%20embossing%20font%20is%20now,Type%20Studio%2C%20exclusively%20for%20Dymo.&text=Dymo%20font%20contains%20230%20defined%20characters%20and%20116%20unique%20glyphs.


How do I get rid of the small line that appears in-between offsets when using array?

Ideally, you need to go back a step and fix the Array. It should be 'Relative' offset, by '1' in X, and 'Merge' should be checked, so the array elements become continuous. But before you do that, you have to remove the faces at the element ends, that coincide where they join, otherwise there will be internal faces in the array. There will be no need to apply the array, you can leave the modifier live.
After doing that, and Simple Deform > Bending your array, there may still be a join visible where its ends meet at 360 degrees. You can get rid of that with a Weld modifier.
It may be worth going into the object's Data tab > Normals panel, to give the whole object an 'Autosmooth', set to about 45 degrees.
Your .blend had the Array applied, so I couldn't fix that. I repaired the mesh instead. But really, you should go back. It's better to keep your modifiers alive as long as possible, for flexibility.


Set Rotation of Multiple Objects to 0 Degrees

Select via name, zero x and y euler rotations.

Test script. Finds all objects in scene with name starting with "Cube Emitter" and sets the x and y components of Euler rotation to zero.

import bpy

pattern = "Cube Emitter"
#pattern = "Cube"
scene = bpy.context.scene

cubes = [o for o in scene.objects
        if o.name.startswith(pattern)]

for cube in cubes:
    cube.rotation_euler.x = 0
    cube.rotation_euler.y = 0


Why is my rendered animation showing a hexadecagon border around my image?

Here's a plane:

Here's the same plane with a subsurf modifier:

Now the object has more vertices instead of the original 4.
The subdivision modifier creates new "virtual" geometry, by interpolating the existing edges and faces.

The Subdivision Surface modifier (often shorten to “Subdiv”) is used to split the faces of a mesh into smaller faces, giving it a smooth appearance. It enables you to create complex smooth surfaces while modeling simple, low-vertex meshes. It avoids the need to save and maintain huge amounts of data, and gives a smooth “organic” look to the object.

If you use (default) Catmul-clark subdivision the object will be rounded.
To keep the plane like a parallelogram, use Simple subdivision:


You have to use the numpad keys, not the number keys. However, if you are on a laptop or similar device that does not have a numpad, you can do the following.

Go to File > User Preferences > Input tab and check Emulate Numpad. This will allow the number keys at the top of your keyboard to function as numpad keys. You will, however, lose the functionality to switch layers, the shortcut to add a Subdivision surface object modifier, and whatever else they are good for. Make sure to click Save User Settings at the bottom of the User Preferences panel. This will make it so that you can use these keys every time you open Blender, rather than having to change the user preferences every time.

The File menu:

The User Preferences window:


Blender collada import export, sketchup comparison

I don't know Sketchup for it's not open-source neither do I use it much but let me explain Blender's collada exporter.

First why is Collada so unique other than it being libre(open),

  COLLADA is designed to be highly flexible. It can store
  application-specific data using its  mechanism at various
  places in the document. You can insert this data in your DCC tool
  using the user properties mechanism; the COLLADA import/export will
  then carry this information for you, so there is no need to change the
  exporter source code to carry your application/game-specific data into
  the COLLADA format.

This means that sketchup's implementation of it has flaws of implementation for it's a relatively simple to use format, and it just records data and passes it on. So the data recorded might be written improperly by the software.

Blender currently uses the opencollada library to provide support for collada import and export. And as it's open, it's more mature than the rest of the libraries used by other tools that the power of being open.

I believe but there are repos like https://github.com/godotengine/collada-exporter.
That improve the implementation for game engine Godot.

That's probably all there is to the implementation.


A way to combine a vertex shape with a pose?

Per hand Driver Approach,

Add a custom property (for example sake "prop") to the hand bones (assuming names "hand.L" and "hand.R") of your armature.  Use this property to drive your fist shape-keys.

Hunt down the hand bone as the variable target, make it a single property variable type,  with pose.bones["hand.R"]["prop"] the data_path.

Each bone custom property is saved with the pose.


Is it possible to render video sequence animations with network render?

a possible workaround would be use dropbox or have the source .blend on the network file servers. Open on different machines and use the Star Frame: & Frame Skip: settings in render panel.

Computer#1: Star Frame 1: & Frame Skip: 5
Computer#2: Star Frame 2: & Frame Skip: 5
Computer#3: Star Frame 3: & Frame Skip: 5
Computer#4: Star Frame 4: & Frame Skip: 5

and so on, thats just a workaround, cannot find a addon for this either.


can i lock my zoom in position while sculpting?

You can temporarily disable Zoom event in the User Preferences.

Zoom in/out to position you'd like so to work comfortable. Then open the window with Ctrl Alt U, type Zoom in the search input textbox and look for the event in the 3D View, to disable/enable simply check/uncheck that option (exact option depends on the type of zooming that you use so frequently):

You may want to leave the User Preferences window opened while you work so not to search for options you've changed.

Note that still you will be able to zoom with other ways in the 3D View window, and using any way in other windows.


Subdivision Modifier Inconsistency (2.8 stable)

After some playing around I've found the problem.

With face select mode enabled, I noticed that each edge had what appeared to be a face on it, shown by the centre dot markers normally seen in face select mode

Deleting those faces alone didn't make much difference, but with vertex select mode back on, I found that there were now twice the number of vertices than the other corners.  Merging those together with Vertex > Merge Vertices > By Distance solved the issue.

The mesh looks wierd on all four corners now, but that's expected and now I can fix it the normal way.


The easiest way to do this would be too increase our blead value in the options panel of painting. The only problem with that is you might have to move your uvs around a bit so they won't bleed into each other.


How can I have a custom projection matrix?

Orthographic Camera Lens

In Blender, there are many settings that influence the way the camera views the scene, and hence how the scene is rendered. You can see these settings by selecting the camera in your scene, then looking in the Object Properties windnow:

Blender has three different Lenses cameras can use: Perspective, Orthographic, and Panoramic. The effect you are looking to achieve is called Orthographic projection/view.

To change a selected camera's Lens, do this:

Select the camera
In the Object Properties window, click on the Camera tab:

In this window, go to the Lens section and there you can select the Orthographic Lens:

Next, adjust the Orthographic Scale setting so your camera view includes everything you want it to:

NOTE: In order to keep the current view in Camera view when you adjust the camera's view, make sure you have Lock Camera To View enabled properly: when Lock Camera to View is enabled, the view will stay in Camera view when you pan or rotate the view. Otherwise, when you rotate the view, Blender will leave Camera view and go back into User view. To enable Lock Camera to View:

Properties panel (N) -> View section -> enable Lock Camera to View

You can read more about the different Camera settings in the Blender Manual here.


You can select individual faces in edit mode and delete them by pressing "X", then select "delete faces".

For this scenario you could also (with that face already selected)press "G" to grab and "Y" to lock it to the Y axis, then enable snap to faces and hover your mouse over the face that's black in the picture(it's normals appear to be inverted but that was not the question). .


Does PNG files size affect video output file size?

Yes...and no.

First of all, I would 100% recommend that you render at the same resolution that you plan to make your video unless you're planning on using AI Upscaling. Doing otherwise would result in the same effect that zooming really closely into an image produces - you start seeing the individual pixels.

Video files will always be smaller than the summation of the frame outputs. That's because videos don't actually store every single frame as an image, they instead use algorithms to store some frames and record what changes between different frames. Rather than trying to explain this myself here's a good short video explanation for this by Tom Scott on Youtube.

From my experience (and it should be noted that I've done some video editing using Adobe Premiere in the past, but nothing professionally), you shouldn't need to further compress the video - MPG4 will already compress the output to be much much smaller.


Visual imperfections while rendering with scattering atmosphere

The problem with the 'red' scattering is due to how you are using the Volume Scatter shader - this should not generally be used on its own and should typically be combined with a Volume Absorption shader, otherwise it will producce unrealistic effects.

The 'scatter' node produces the result of the scattering in a volume whereas the 'absorption' node attenuates the light as it passes through to emulate losses due to actual absorption and also the losses due to scattering. Without combining the absorption with a Density at least as high as that used for scattering you will be breaking the usual laws of conservation of energy - effectively generating light from nowhere.

You should combine the absorption as follows :

The example is produced by two spheres - one with a diffuse shader and another (slightly larger) sphere with the volumetric material shown. Note that the density is much smaller than in your example - and ensure the volumetric 'Step' size is small enough to produce enough steps through the volume of your atmosphere.

See also https://blender.stackexchange.com/a/92327/29586 for a more realistic atmosphere (one that falls off realistically in relation to altitude).


When I start my Minecraft Animation, the FPS is drop down about 2ˇˇ3

It's hard to know why your scene in particular might be slow without more information but since playback in particular is slow then you should consider things in your scene that are only calculated during playback.
For example:

Simulated objects (e.g. rigid body or soft body dynamics)
Particle systems
Fluids

You could try disabling parts of your scene to narrow down what might be slowing things down: maybe a specific object or set of objects?
If you find that it's a simulation of some sort, consider baking it to a cache.
If it's a complex modifier you may be able to export that object to an Alembic cache and use that to reduce the cost.
Finally, if your scene is simply way too complex you may want to split it into smaller pieces, do your animation in a simpler scene, then create a master scene that references all the pieces to create your final render, where you expect each frame to take a long time anyway.


Align View to Current Transform Orientation

Test script to put all 3d view areas in context screen into same orientation as first custom scene orientation
import bpy
from mathutils import Matrix
context = bpy.context
# put all view_3d areas in screen into screen.orientation[0]
scene = context.scene
screen = context.screen
for o in scene.transform_orientation_slots:
    if o.custom_orientation:
        orientation = o.custom_orientation

print("Using ", orientation.name)
view_rot = orientation.matrix.to_quaternion()

view3dareas = [a for a in screen.areas if a.type == 'VIEW_3D']
for a in view3dareas:
    r3d = a.spaces.active.region_3d
    r3d.view_rotation = view_rot

To make it change from camera perspective would need something like
    if r3d.view_perspective == 'CAMERA':
        r3d.view_perspective = 'PERSP'

To look "from above" from this orientation
rot = Matrix.Rotation(radians(-90), 3, 'X')
#view_rot = (rot * orientation.matrix).to_quaternion()
view_rot.rotate(rot)


How to determine lens undistortion values for motion tracking?

All camera lenses in the real world create some kind of distortion. CG imagery  does not have the imperfections of glass.

Setting the distortion values for the lens is crucial if you are trying to do accurate scene reconstruction and integration with 3D generated elements.

To determine the values for a particular lens you can shoot a picture of something you know has straight lines (It doesn't have to be a grid, but it must have straight lines).

Use the annotation tool to draw straight lines to use as reference . Find the beginning and ending points of lines that should be straight and draw a line that connects them (To draw straight lines use CtrlD and Left Mouse Button).

Enable Calibration on the Display tab.

Play with the K1, K2 settings and distort the pencil lines until they match the curvature of the distorted lines in your image.
To correct Barrel distortion use Negative numbers on K1, for Pincushion use positive values.

Settings in Blender 2.8X

Keep in mind that most distortion is radial and distorts the image starting from the optical center of the lens (that might not coincide with the center of the image)
If you find that the drawn line distort correctly on the top of the frame and not on the bottom (or vice versa, or on one side of the frame and not in the other) you might need to manually find the optical center in the camera settings. The slider on the left will move the optical center horizontally, the one on the right will move it vertically.

To check the result in your image you can use the Render Undistorted option.

Use the same values for images made with the same lens. If you change lenses, you will have to determine the values for each one.
Currently there is no way in blender to use images made with a variable focal length during the shot. In other words don't use a zoom during the shot.
How To Make Use Of The Distortion Information
To use the distortion information in the compositor use a Movie distortion node (not to be confused with the Lens Distortion node)
available in Shift + A > Distort > Movie Distortion
The node needs to use the information from the clip you used to determine the distortion.

To create an undistorted version of the image use the node with the Undistort option enabled after the video clip, and before the nodes to combine with the 3D scene.

Depending of your needs, there is another way to use the distortion values of the lens, and that is to leave the video footage alone and apply de distortion to the 3D scene generated in blender. In that case you'd plug the Movie Distortion node to the rendered layers using the Distort option.

Note
There are currently two choices to undistort.

Divisions will only give you two parameters to play: K1 and K2.
Most lenses can be corrected with these.
For more complex lens distortion.
Polynomial will give you an additional K3.
To understand the difference between the two you can read this IPOL article about division models, but for the mathematically challenged it may suffice to quote:

The main advantage of the division model is the requirement of fewer terms than the polynomial model for the case of severe distortion. Therefore, the division model seems to be more adequate for wide-angle lenses.

for basic info on K1, K2, K3 and image center (or optical axis) read:
https://en.wikipedia.org/wiki/Distortion_(optics)
Blender uses algorithms based on OpenCV. You might want to read more in the following link:
https://docs.opencv.org/2.4/doc/tutorials/calib3d/camera_calibration/camera_calibration.html
Other Note When undistorting it is likely that you'll run into problems with the edges of the frame:
It is possible that the undistorted image shows repeated pixels at the edge of the frame:

Or that the edges of the image are missing.

Read these links:
Solve camera motion in Blender: exact camera data or refinement?
Motion tracking. The edges of undistorted footage are cropped, and so are the elements of the 3D scene
For an alternative way to export undistortion information to other software like Nuke, Natron, Fusion, etc. read this link:
https://openvisualfx.com/2020/05/05/nuke-lens-distortion-in-blender-2-90/
and
Why is my footage smearing out towards the border on rendering an image?
3


You need to reduce the focal length of your camera drastically, increase the size of
the ocean, make the ripples more and smaller and flatten the angle of the camera
in relation to sea level.

EDIT (added): Take a close look at the original picture how imperfect it is! :) Why is your picture so perfect? :) :)
The human perception is trained to interpret subtle things like those imperfections. Often "perfect" renders are looking "sterilized" and "unnatural" (NO critism implied!!!).
Play with the depth of field of the camera and make it a little blurry in
the distance.
Then add some haze - just a little bit to obfuscate the "end of the horizon".
Infinity and long distances are often obfuscated and blocked for example in movies and the human brain is tricked into thinking "oh yeah...I can't what's there in the disctance...it must VERY FAR FAR away, because I can't see it!"


My Minecraft's Player rig doesn't have shadows, how to fix?

Select your light object, head over to the light options tab on the right hand side, and turn on shadows.


get coordinates of bone from the perspective of second bone in driver

Although not in the same direction as i was originally thinking, one can get a good sense of which direction a bone is at using the following construction:

create a helper bone parented to and aligned with bone A, with a damped track constraint pointing to bone B. Now add the driver using the desired rotation of the helper bone  (e.g., X, Z) in swing and Y twist mode within local space. In this mode the angle is calculated as if the bone was first swung in the X,Z axis to align the bone, and then twisted in Y to match up the axis. This thus gives us an indication of the direction of bone B from the perspective of bone A without having to worry about any twisting around the Y axis of our helper bone.


Streaking Behaviour of Lights - Render but not Viewport

It looks like the render is the physically correct way to render lights over that kind of surface. Looking up reference images of sunsets over an ocean show similar effects. To make the light not travel that far down the surface of your floor, you'll likely need to lower the power of the lights.
I wonder if the floor has a modifier on it that changes it's displacement that would only show up on a real render, and not in your viewport.


Blender Internal:

Add a new texture and set the type to image or movie.
Select a file, then set the source to either Sequence or Movie depending on the format your rendered animation is in. (e.g. Sequence for an image sequence, or Movie for a single video file.)

Cycles:

Add a new Image Texture node and open a file.
Set the Source (this option will appear after you select a file) to either Sequence or Movie, again depending on the format your rendered animation is in.


Is it possible to associate non-blend files with Blender?

No, Blender doesn't support this. Mainly because there are many options you may want to configure while importing a file.

However if its vital for your work-flow, writing a script to do this is not such a difficult task.

eg:

blender --python /path/to/auto_open.py --

Contents of auto_open.py

import os
from sys import argv
argv = argv[argv.index("--") + 1:]

# format specific options... change as you like
args_fbx = dict(
    # global_scale=1.0,
    )

args_obj = dict(
    # use_image_search=False,
    )

args_3ds = dict(
    # constrain_size=0.0,
    )

import bpy
for f in argv:
    ext = os.path.splitext(f)[1].lower()

    if ext == ".fbx":
        bpy.ops.import_scene.fbx(filepath=f, **args_fbx)
    elif ext == ".obj":
        bpy.ops.import_scene.obj(filepath=f, **args_obj)
    elif ext == ".3ds":
        bpy.ops.import_scene.autodesk_3ds(filepath=f, **args_3ds)
    else:
        print("Extension %r is not known!" % ext)
else:
    print("No files passed")

File associations typically add the file to the end of the command to form something like this:

blender --python /path/to/auto_open.py -- /home/me/my_model.fbx

Linux (Setup Script)

Setting file associations can be done via this script (to save you having to do it manually), tested on Linux with Gnome.

Run this once bash blender_auto_import.sh

#!/bin/bash
echo "Setting up Blender file extensions..."
DESKTOP_FILE="$HOME/.local/share/applications/blender_auto_import.desktop"
MIME_DIR="$HOME/.local/share/mime/packages"
PYTHON_SCRIPT="$HOME/.config/blender/blender_auto_open.py"
EXT_LIST="fbx obj 3ds"

mkdir -p $(dirname "$DESKTOP_FILE")
mkdir -p $(dirname "$PYTHON_SCRIPT")

tee $DESKTOP_FILE > /dev/null <<EOF
[Desktop Entry]
Encoding=UTF-8
Name=Blender Auto Import
Exec=blender --python $PYTHON_SCRIPT -- %F
MimeType=application/x-blender_auto_import;
Icon=blender
Terminal=false
Type=Application
Categories=Graphics;3DGraphics;
EOF
echo "  written: '$DESKTOP_FILE'"

# setup file associations
for EXT in $EXT_LIST; do
    XML_FILEPATH="$MIME_DIR/x-blender_auto_import_$EXT.xml"
    tee $XML_FILEPATH > /dev/null <<EOF
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
    <mime-type type="application/x-blender_auto_import_$EXT">
        <comment>Blender $EXT file</comment>
        <glob pattern="*.$EXT"/>
    </mime-type>
</mime-info>
EOF
    echo "  written: '$XML_FILEPATH'"
done

# update desktop files
update-desktop-database $(dirname "$DESKTOP_FILE")
update-mime-database $(dirname "$MIME_DIR")

for EXT in $EXT_LIST; do
    xdg-mime default ${DESKTOP_FILE##*/} "application/x-blender_auto_import_$EXT"
done

tee $PYTHON_SCRIPT > /dev/null <<EOF
import bpy

# format specific options... change as you like
args_fbx = dict(
    # global_scale=1.0,
    )

args_obj = dict(
    # use_image_search=False,
    )

args_3ds = dict(
    # constrain_size=0.0,
    )

def clear_scene():
    for scene in bpy.data.scenes:
        for obj in scene.objects[:]:
            scene.objects.unlink(obj)

def main():
    import os

    from sys import argv
    argv = argv[argv.index("--") + 1:]

    for f in argv:
        ext = os.path.splitext(f)[1].lower()

        if ext == ".fbx":
            bpy.ops.import_scene.fbx(filepath=f, **args_fbx)
        elif ext == ".obj":
            bpy.ops.import_scene.obj(filepath=f, **args_obj)
        elif ext == ".3ds":
            bpy.ops.import_scene.autodesk_3ds(filepath=f, **args_3ds)
        else:
            print("Extension %r is not known!" % ext)
    else:
        print("No files passed!")

if __name__ == "__main__":
    clear_scene()
    main()
EOF
echo "  written: '$PYTHON_SCRIPT'"

echo "Done!"


You can do this quite simply without the bpy.ops.  For testing I made a py dict from some of your xml data.

import bpy
context = bpy.context
scene = context.scene
markers = {
            "F_00": {"frame":0, "camera":"Camera.003", "frame_time":0.04},
            "F_335": {"frame":335, "camera":"Camera.005", "frame_time":13.92},
           }
for name, m_data in markers.items():
    # add a marker
    marker = scene.timeline_markers.new(name, frame=m_data["frame"])
    marker.camera = scene.objects.get(m_data["camera"])


How to make custom node type animation data show in dope sheet

This appears to be a limitation of the current setup. The dopesheet and graph editor don't display items from custom node trees.


how can i convert a vertex of a plane into bezier with handle?

No, not the way you describe. You can convert a mesh to a collection of Straight splines using Alt+C in object mode, but the resulting Curve object doesn't have handles you can drag away from the Knot. (more about this later)

A simple mesh based solution is to use ctrl+shift+B with the vertex selected and drag out to generate the Bevel, or Fillet (to fillet use mouse wheel to set to number of cuts)

Regarding Spline / Bezier based 2d surfaces i recommend the answers to this question: Make a quarter curve with curves

You can convert the plane to a Curve object (using Alt+C as mentioned earlier, but this creates a Curve of type 'Poly', which means it doesn't have handles, only points. The curve object can be recast as a bezier type (but not easily from the UI, at least I'm not privy to any method). You can use the built in python console to convert the curve from 'POLY' to 'BEZIER' and it will create the handles in the right places too. Also remember to set the Curve type to 2D (from 3D) else you won't see the surfaces

>>> # after you've converted the plane to a Curve object using Alt+C
>>> obj = bpy.data.objects['Plane']
>>> obj.data.splines[0].type
... 'POLY'
>>> obj.data.splines[0].type = 'BEZIER'   # this sets it


Texture Mask paints mesh with a grid instead of random

Found the answer with a little tinkering. Checking Rake or Random or both removes the grid it keeps locking onto.

If anyone knows why or how this works, comment.


Is there a library of components for modelling buildings?

Not inside of Blender there is not, Most assets like that you have to download yourself, However there are a few in File> User preferences > Addons > mesh
Enable them all and try them out, see if you get what you want. Also There are free models at http://tf3dm.com/


Rotate a particular bone in edit mode without offsetting animation?

Here's a function I wrote that lets you rotate a bone in edit mode and automatically corrects all animations so they maintain the same orientation:

def reorient_bone(operator, context, fixed_items, layers=(), bone_name="Bip0", location=mathutils.Vector((0,0,1)), rotation=mathutils.Euler((0,0,1)) ):
    qrn = rotation.to_quaternion().conjugated()
    qe = rotation.to_quaternion()
    #when no object exists, or when we are in edit mode when script is run
    for ob in bpy.context.scene.objects:
        if type(ob.data) ==  bpy.types.Armature:
            bpy.context.scene.objects.active = ob
            bpy.ops.object.mode_set(mode='EDIT')
            for bone in ob.data.edit_bones:
                if bone.name == bone_name:
                    l =  mathutils.Vector(bone.head)
                    m =  rotation.to_matrix() * bone.matrix.to_3x3()
                    bone.head = mathutils.Vector((0,0,0))
                    bone.tail = mathutils.Vector((0,1,0))
                    bone.roll = 0
                    bone.transform(m)
                    bone.translate(l)
            bpy.ops.object.mode_set(mode='POSE')

    for action in bpy.data.actions:
        for group in action.groups:
            if group.name == bone_name:
                #rotate the translation so the movement of the bone remains identical
                for t in ("location", "quaternion"):
                    curves = [fcurve for fcurve in group.channels if fcurve.data_path.endswith(t)]
                    if curves:
                        num_keys = len(curves[0].keyframe_points)
                        for i in range(0, num_keys):
                            frame = curves[0].keyframe_points[i].co[0]
                            key = [fcurve.keyframe_points[i].co[1] for fcurve in curves]
                            if len(curves) == 3:
                                key =  qrn * mathutils.Vector(key)
                            else:
                                #arbitrary rotations keeping the worldspace character of the rotation
                                if fixed_items == "0":
                                    q = mathutils.Quaternion(key)
                                    v, a = q.to_axis_angle()
                                    v =  qrn * mathutils.Vector(v)
                                    key = mathutils.Quaternion(v, a)

                                #for the other case - restore rotation around rest bone change
                                if fixed_items == "1":
                                    key = mathutils.Quaternion(key) * qe
                            for a in range(0,len(curves)):
                                curves[a].keyframe_points[i].co[1] = key[a]
                        for fcurve in curves:
                            fcurve.update()
    #call the tangent function
    loop_fcurve_tangents()
    return {'FINISHED'}


Fractal Noise in Blender Stretches From Origin Point- Why?

Procedural textures should generally never have variable scale - since the scale affects the "size" of the pattern in relation to the origin, varying the scale close to the origin will have small effects while this is magnified the further the point is from the origin (as all that space between the origin and the point has been scaled by the same amount).

A better solution is to distort the texture coordinates to 'compress' or 'expand' different regions of the texture based on the noise, rather than adjusting the scale. This will have an effect that is consistent regardless of distance to the origin.

For example, consider the following nodes :

Here's instead of the Noise varying the scale, the noise is combined with the coordinates to shift them a varying amount. This varies the rate of change of the vector as it moves across the texture, compressing some regions and expanding others. This can produce the following result :

Varying the properties of the Noise affects the frequency of the distortion and the Value node used for the multiply will affect the strength.


How to check if all my faces on mesh are all quads using a script

I suppose your goal here is not for the script, as you say "or if there is a pre-build button".

So in edit mode, set the selection mode to 'face', select any quad and use the menu "Select/Select similar/Polygon Sides".

Once done you have all the quads, simply invert the selection with CtrlI to obtain non quad polygons.

The selection operators are dependent on the selection mode (vertex, edge, face), have a look at the menu for each case.

You may also want to select 'all by traits' to know if there is non manifold parts or loose geometry in your model.

If needed a commented script:

import bpy

# Go to object mode so that we can select
bpy.ops.object.mode_set(mode = 'OBJECT')

# Get active object
obj = bpy.context.active_object

# Select non quad faces (polygons)
for p in obj.data.polygons:
    p.select = len(p.vertices) != 4

# Go in edit mode to show the result
bpy.ops.object.mode_set(mode = 'EDIT')


How to add a light that is only visible to the shadow path?

The Shadow Ray output is a little unique in that its type is determined based on its end point (a light source), rather than its start point (the material it last interacted with).

Making a light source invisible to everything except shadow rays will cause it to only block light from other light sources and not influence anything else.

However, it is possible to limit the number bounces a light source is allowed to influence. (I suspect this is what more you want to do)

Lamps have a Max bounces setting, which when set to 0 will only allow that lamp to illuminate directly (disabling "bounce lighting" for that specific lamp):

To do the same with nodes (e.g. for mesh lights), you can use the Ray Depth output of the light path node:

As always when working with light paths, it's important to keep in mind that rays are traced backwards (from the camera).


Fluid Simulation problem, some frames render others don't

That is a bug that I have experienced many times with fluids. It does not affect final render however, so it is not that much of a problem. Just a headache.

Not really an answer I guess, but you can be content to know that you did not cause the problem. You can send in a bug report, but that is really all you can do.


I'm not a cloth expert but as I told you I think this tutorial by Aneesh Arts gives a series of good tricks.
The first thing I would say is that your gown and pants are rather high-poly and it doesn't help to easily work, you should do a low-poly version and give it a Subdivision Surface modifier.
That said I was able to quickly improve your problem with these 2 solutions:

First, move a bit the vertices of the bottom of the gown with the Proportional Editing enabled. You can even create a new shapekey so that the topology only moves when necessary:

Find and display the deforming bones in the armature layers:

Select the armature, then shift shelect the pants, switch to Weight Paint mode, check each bone and use Blend > Mix or Subtract to increase or decrease their influence. Then do the same for the gown, until there is no clothes overlapping:

At the end you should be able to have a good result:

There is another method that may help, it is to give your clothes a Mesh Deform modifier as I explained here, you could try to associate it with cloth simulation...


I can't get an arrayed object to follow bezier curve

There are two things that cause trouble:

1. Array orientation (little trouble)
Your array is facing the wrong way.
Just rotate it like this and set the Relative offset on the X axis.

2. Curve radius (big trouble)
The curve radius is set to 200 (waaay too high), which causes significant distortion.
Either change the curve radius to 1.
Or uncheck Radius in the curve properties.

Change curve radius to 1.
Sidebar > Item > Mean Radius

Or disable radius influence altogether
Curve > Shape > Radius (uncheck).


I have a model which I need to separate its head from body

I'll try showing you some simple way to simplify (by hand) your model body: I downloaded a full body human mesh from this site.

The archive is compressed with .rar format, so you have to unrar it before (it's like a .zip archive, just different): find a suitable program for your computer system (eg: http://www.7-zip.org/, free and open source).

The extracted model itself, is in .obj format so you can't open it in blender directly, you have to import it: blender has a "Wavefront (.obj)" importer by default, use it with default settings, it works well.

You get this model:

how to simplify it body without touching its head?

example: select a "loop" of vertices (this is a particular one that goes over all the model'storso)

how to?

select two vertices sharing an edge, like in the picture below,

and in edit mode use the

mesh > edges > edge loop

you can also get the same menu floating, like in the picture,  using the shortcut CTRLE

anyway you can select loops in any way, with the many selection tools of blender...

  tip: a useful simplified way to select a loop is to select one of its  edges while keeping pressed the ALT key (and, as always, SHIFT if you are adding to a previous selection)

now the loop is selected,

now press X to get the "delete" menu, and use "dissolve edges"

and you get

you can also "dissolve" several edge loops together:just leave some loop between them, like here:

and you'll simplify it faster

that's it, you reduced you vertex count without ruining your shape!

you can do this on arms, legs, torso, just be sure to do it simmetrically, and just where it don't alter too much your body shape and... don't loose your head :))

Hope it helps.

edit:

after importing your real model into blender (using mmd_tools addon), I saw it's quite dense, but made of triangles instead of quads...

as said below in comments, loops work only on quads, but fortunately blender can convert triangles (tris) to quadratic shapes (quad) - 2 tris become 1 quad. with this menu command:

after which you get your model almost entirely in quads

Then I noticed another problem: there are doubles (how I noticed? some loop was still not working, so I guessed that... experience)

So you have to remove doubles first: in edit mode, press W to get the "specials" menu and press "remove doubles"

you see there were some

Now loop tools work as expected, and you can try my suggested path above

You may have noticed that converting 2 tris to 1 quad has reduced total faces count (of course) from about 45k to 25k. But exporting back your "quad" model to pmx, triangles will be restored by the exporting process (so 1 quad will become 2 tris). So, based on your question info, you'll have to reduce your "quad" model below 10k quads, acting on body obnly, I guess. It's a lot!

I also noticed your model is fully rigged, so it could be ready to be animated in VRchat? ...if yes, of course, reducing body vertices could make it move differently than intended, who knows.

It's not as easy as those people that advised you to use blender thought perhaps. It can be done, imho, but it will require a lot of tries and patience, and restarts if it becomes a mess...

Last, about this comment:
"Is there a possibility just to make the head in a different part of the body's part so that I can decimate only the body using Unity? Because I have nice Unity plugin for reducing the Tris but need to make the head a different part or mesh than the whole body. "

you can split your mesh easily in blender, too. select head vertices, the press p, and select "selection", Done. And you can act on body only. But if you later need to join that head with the simplified body, it will be worse. And if the model is to be animated in VR chat, using the full armature that the model has, it will be even worse, trust me...

But you can try different things, at least!

edit2:

about your last comments, and the fact  that you can't reduce much triangles... yes, it is impossible to get below 20k triangles if you don't want to edit the head...

as you see, your head alone (selected) is made of over 12.2k quads, ie: around 25k triangles... that does not deend on blender tools, it's just how this bee is done.

If you want to go below 20k for the entire model, you must edit the head also... sorry...


Evaluate FCurve without keyframes won't work

Get the object from the path.
Can get the object from the datapath via (with and without coercing to the value)
>>> C.object.id_data.path_resolve('scale')
Vector((1.0, 1.0, 1.0))

>>> C.object.id_data.path_resolve('scale', False)
bpy.data.objects['Vert.001'].scale

can look at the last part of the path and check whether that property is an array,
>>> C.object.bl_rna.properties['scale'].is_array
True

however it is possibly easier to try and iter and if not use the index.
datapath = 'scale'
index = 0
frame = bpy.context.scene.frame_current

if not (len(fc.keyframe_points) or len(fc.sampled_points)):
    ob = obj.id_data.path_resolve('scale')
    try:
        iter(ob)
        value = ob[index]
    except TypeError:
        value = ob
else:
    value = fcurve.evaluate(frame)

print(value)


blurry textures on fullscreen in blender game engine

You need to activate anisotropic filtering in Blender's system settings.

Hit Ctrl+Alt+U, go to the System Panel and change the settings under Anisotropic Filtering to 2 or higher.


Book Shelf: Rigid Body Sim- Books thrown out

blender's rigid body simulator isn't perfect. you can change sensitivity (under collissions) to make it more accurate and change shape (also under collissions) to mesh


Able to change dimensions, but not scale

You should apply dimensions first and then scale it.
Since set dimension kind of reset the scale to make it work in calculation.
import bpy
import bmesh
from bpy_extras.object_utils import AddObjectHelper
from bpy import context

bpy.ops.mesh.primitive_cube_add(size=16, enter_editmode=False, align='WORLD', location=(0, 0, 0))
# select the last created object
bpy.context.view_layer.objects.active = bpy.data.objects[-1]

bpy.context.object.location.xy = 0.0, 0.0
bpy.context.object.location.z = 8.6

bpy.context.object.dimensions.z = 2.0
bpy.context.object.scale.xy = 1250, 1250


I've not been able to get an answer on this question anywhere. The closest workaround I've found is to just A -> ctrl+T and flip the curve before starting. Ended up working reasonably well.


weights not showing in weight paint mode

Ok, I think I have this figured out...

If I set the viewpoint shading mode to solid and THEN enter weight pain mode, the weights are being displayed.

However, if I enter weight paint mode first and THEN set the viewpoint shading mode to "solid", everything is shown grey, instead.

So the easiest way to solve this grey stuff is switching to object mode and back into weight paint mode.


Music visualization is not working in animation nodes

The problem is that you used the Object Instancer without making deep copies.
Making a "Deep Copy" means that each individual object will have its own mesh data. Otherwise all instances will share the same mesh data block. So when you change one of them you'll change all objects.

Your loop essentially changed the mesh on all objects multiple times.

Maybe this .gif explains better what "deep copy" means:


How can I animate bump or displacement node?

Of course you can animates all the settings you want in your nodes, you just need to put your cursor where you want the change to happen in the Timeline, then in the Node Editor put your mouse on the factor you want to change and press i to insert a keyframe. Now, move your cursor in the Timeline and again go back in the Node Editor, change the factor and press i to insert a new keyframe, etc.


Why isn't 'Loop selection' working if object only has edges?

For my understanding, the 4 edges of the top face of the cube are a loop.

Sure, they form a loop... but so do each of the other faces of the cube.

Each corner of the cube is a pole, where the edge flow can fork in either of three directions. So while it may be obvious to you which four edges you want to select, Blender has no way of knowing your intentions.


Displacement settings in Materials turn material black

Luckily this is a easy one, the only problem was your Displacement node having the wrong values. I downloaded your file and saw that you set the scale on your displacement to something around 47 which is really big, this value controls the overall scale the displacement has meaning a higher value makes the displacement stand out or drop down more.
The middle value called "Midlevel" was set to 5 in your file, but it should be around 0.5 in most cases as it marks the height of the overall displacement (the Midlevel specifically controls what height the colour on your height map right in the middle between black and white would be at, in short its the height of the entire displacement.) Due to it being at 5 in your example, the whole texture got sent up into the air so you couldnt see it anymore, therefore making the object appear invisible because you could only see the orange outline which doesnt go up with the rest of the texture.
Lastly, the displacement texture you're using is almost completely black meaning the texture gets sent down anyways as black indicates a drop in the displacement and white tells it to go up.
I would reccomend you to play around with the displacement node in a test file and learn how the different values work so you can set them up correctly in the future, as well as making your texture artificially brighter so it ideally spans the whole range between black and white, either in a image editing program like Photoshop or using nodes in Blender.
I hope this helps, if it doesn't make sure to comment here again so I can help you further :)


Try the following........
1: Extrude out a couple of the faces.

2: Add a Subdivision modifier.

3: Select the upper edge loop and slide it up towards the next edge loop.
( G G to edge slide ). See screenshot below. Then    repeat for the other edge loop.

4: Select the middle 2 vertices and drag them out a little to form the  curve.

5: After setting all the faces to Smooth Shading, (select all, Face menu > Shade Smooth) enable the Auto Smooth option from the Object Data Properties tab.


How can I attribute a parameter to multiple objects?

bpy.props allows you to define your own get/set/update methods for a property.

import bpy

def update(self, context):
    #self ~ owner of the property
    for obj in context.selected_objects:
        #assigning a value to obj.property would cause a recursion!!!
        obj["custom_property"] = self.custom_property

bpy.types.Object.custom_property = bpy.props.IntProperty(update=update)

If you change the attribute custom_property for an object the change will be applied to all selected objects.

You can also use drivers to synchronize properties.


Life would be easier if the Blender version was always visible in the interface so one can always know which version to use for tutorials

The version number is displayed in the bottom right corner:


Volume emitter that is more intense towards the outside of the object

You might be able to do something with the Ray length output of the lightpath node, however based on your example image I think you might be looking for the layer weight (or fresnel) node:

The above node setup mixes an emission shader with a transparent shader based on the angle of the surface to the camera. In this case sharper angles emit light, while more direct angles are transparent.


You can create cycles instantly using Curve modifiers, which are accessed through the Graph Editor window's Properties Shelf (press 'n' while mouse hovering over the Graph Editor Window to bring up the Shelf). Once the Properties Shelf is up, you will see tabs to the far right of it, one of which is Modifiers. Click on it.

In my example, I created two keyframes on the Global Z axis to make the cylinder rotate 360 degrees in 32 frames. Instead of making extra keyframes to add additional revolutions, I was able to create a cycle modifier, which automatically extends the rotations indefinitely. Setting the Repeat Motion: After field to 3 allows me to add three repeated revolutions to the original one, giving me four revolutions, total.

You may find, as I did, that something odd happens to the final keyframe in the original F-Curve after adding the Repeat Motion restriction, causing the cycled loops to have timing which does not connect seamlessly. I had to manually adjust the handles on the final keyframe for the original F-Curve after setting this up, for reasons unknown. Might be a bug. Just giving you a heads up.


Cut your hole >  in Edit Mode select the loop of faces inside the new hole > Ctrl+Numpad + to grow the selection once or twice > Ctrl+T for "triangulate faces" (or you can right click and it should be in the pop up menu; or go to the menu for 'faces') > Alt+J for "turn triangles into quads" (this is in the 'faces' menu too).

Not sure how well this will work for your needs, but it's quick.  GL OP


How can I translate & rotate an object to match a pair of xyz coordinates?

How do I construct a transformation matrix from 3 vertices? gives a generic technique to convert a triangle into a transformation matrix.  You could use this to pick a transform matrix to apply to a generic cylinder.

If you don't like the choice of X as the primary axis, you can rearrange the arguments to Matrix([a2,b2,c2]) , although some of those orderings will be left-handed instead of right-handed, requiring you to reverse one of them.  For example Matrix([b2,a2,-c2]).

Also, since your use case only includes 2 points, you'll need to pick a 3rd in order to construct the matrix.  If you know something about the direction of the pairs of coordinates and can guarantee a 3rd coordinate that will always be non-colinear, use that.  Otherwise, you'll have to add a little bit of logic that checks for things being "too colinear" and using a different 3rd axis.

If you want your cylinder to stretch with the distance between the points, you can use non-normalized a instead of a2.

If this narrative is a little too vague, go ahead and request some refinements in the comments.


Can Blender 2.79 Fluid Physics act on Rigid Body objects?

Yes!!!
After 2 days of work, I can finally say: It is Possible!
See the picture below.

You can watch the full animation Here on Youtube 11s Video
By the way, no it is not a keyframed animation of the turbine that you are seeing. It is pure physics.

The author wrote under the linked youtube video:

In Blender, Rigid Bodies effects on Fluids are very to implement. However, for long, the reverse interaction was dubbed impossible. No more! Using Blender Particles to emit particles, then converting them to rigid bodies and finally applying Cube Suffer on the resulting animation.
In this video, I'm using a modified version of Cube Surfer to make able to utilize simple meshes (not particles as in the original version).
If there's enough likes, I might post a detailed tutorial.


How to add a new audio track to a video clip

Okay, so I'm posting this answer to my own question in case someone else has the same problem as I did. If you feel this isn't helpful, please feel free to vote to delete it.

The issue was that I tried adding the video clip to the audio instead of the other way around. Once I reloaded the file and put in the video clip first and then deleted the original audio and added the new audio it worked just fine.


How to programmatically add objects into cryptomatte node?

I think the best way to do this is to open up a text editor window in blender by putting your mouse on the corner of the 3d view and dragging to open it.  This will open up another window and you can change the window type to text editor.  Click new and you will have opened up a file.  Next open up a python info window using the same procedure.  You can now see what all your commands are in python.  You can add objects like this by typing this into the text editor:

for i in range(10):
    *stuff*

replace stuff with the commands that you see printed in the info tab that you used to create your shape.  For example, once you make a cube you see a command in the info tab called bpy.ops.mesh.primitive_cube_add(size=2, enter_editmode=False, location=(0, 0, 0)).  You could then copy that command into your code to create your shapes.  If you want to learn about python scripting I would recommend reading blender's python documentation.


Change property of a set of multiple objects with python script

This was supposed to be the non-Python solution:

Do a rightclick on the first of your objects.
Go to the menu Select >> Select Pattern...

Type in "X??". That'll select all objects starting with X being 3 characters long.

Road one:

Enter the desired number into the Distance field of your active object.
Right-click the button and choose 'Copy To Selected'

Road two:

Alt-leftclick the button and enter the number. All objects will have the same value.

That was the plan until I actually tried it. Doesn't work. Blender thinks that stuff isn't copyable, so, Python it is.

import bpy

prefix = 'X'
dist = 7.0 # distance you wish to copy
llevel = 1 # change for higher levels

c = 0 # just a counter to create a sense of accomplishment
for a in bpy.data.objects: # goes through all objects in your blendfile
    n = a.name # get the object's name
    if len(n) == 3 and n[0] == prefix: # If the names length is 3 and starts with x
        if len(a.lod_levels) > 0: # and if there actually are lod levels
            a.lod_levels[llevel].distance = dist # then assign the distance to them
            c += 1

print("I have successfully changed {} Objects".format(c)) # victory message

It's actually not too far away from your pseudocode, so I hope your survivability regarding python powers will increase.


Use the "backfacing" output from the geometry node (input section).

The output will make the side of the face in which the normal is pointing equal to 0, and the other side (back) equal to 1. This can be used in a mix node.

Note: make sure that all your normals are facing the right direction (crtl+n)

Try this nodes setup.


How To Lock A 3D View From Being Roatated ? (2.8)

You can lock a camera's rotation in the Transform tab. Press Ctrl + Alt + Numpad0 to align a camera with a view and then check Lock Camera to View.


You can hit CTRL+ALT+Q to toggle quad view mode, showing your model along all major axes.

From there, you can rotate with r for manual corrections. For finer control, hold Shift while you rotate.

Edit: An alternative method to ensure a symmetric mesh when you're done:

1 to view from front
Tab to enter edit mode
z to display wireframe
b+box select the whole left side of your mesh (you may need to Ctrl+r add an edge loop down the mid-line first)
x delete selected vertices
Add and apply a mirror modifier along the x axis

Not sure how this will differ from what you described in your comment, but it's an option


The following is a workaround rather than a complete solution. It doesn't answer your actual question, in that it doesn't generate a mesh representing the equation, thus you can't use image textures or do more elaborate things, like sculpting or rigging. It renders a visual representation of the equation, by using volumetric shading and some math nodes. Moreover, it's Cycles specific. What it does do, is work well with any implicit equation of three variables, as long as it uses functions that exist in Cycles math nodes.

So, how to do it...
Add a cube, which will serve as the bounding box (ShiftA followed by M followed by C or Add -> Mesh -> Cube).
Press N to open the properties panel, unless it's already open, and change the values for Dimension to the proper values, and apply the scale (CtrlA followed by S or Object -> Apply -> Scale). If for example you want to cover the range (-0.5, -0.5, -0.5) to (1.5, 1.5, 1.5) all dimension values should be set to 2.000, and if you want to cover the range (-1, -2.5, 0) to (5, 5, 5), the dimensions should be x = 6.000, y = 7.500, z = 5.000.

Now the box has the correct dimensions, but its origin is at its centre. With the above examples, the ranges will now be (-1, -1, -1) to (1, 1, 1) and (-3, -3.75, -2.5) to (3, 3.75, 2.5) respectively.
To remedy this, Tab into edit mode, and move the box along each axis, until it covers the range you need. Press G followed by the axis along which to move it, followed by the amount by which to move it, followed by Enter, for example G followed by X followed by Numpad 1 followed by Enter to move it by 1 along the x axis. For the above two examples, you need to move it by (0.5, 0.5, 0.5) and (2, 5, 2.5) respectively. When you're done, Tab back to object mode.

At this point, it's perfectly ok to move, rotate and scale the box, as long as you do so in object mode and don't apply any transformations. Also keep in mind that scaling is a bit special: unless you scale equally along all three axes, you will end up with different step size along the axes. This may be good or bad, and the decision is yours to make.

Open up the compositor, and make sure the shader editor is active and that Use Nodes is checked (the purple rectangles in the image below). If there is a button named New, click it, to create a new material.

Click the image to see a larger version

The nodes above corresponds to the equation sin(x)+sin(y)+cos(z)=1, which is the one you ask about in Creating mesh on a surface with two variables.

The nodes in the red rectangle give the coordinates with (0, 0, 0) at the object's origin. It's similar to using Object coordinates of the Texture Coordinate node, however the object coordinates places (0, 0, 0) at the centre of the bounding box, which isn't what we want.

The Separate XYZ node (the blue rectangle) does what its name suggests.

The nodes in the yellow rectangle are the left side of the equation.

The nodes in the green rectangle are the right side of the equation. This probably requires some explanation. If you simply use the Less Than 1.000 you will get everything inside the volume. To simulate a surface with a slight thickness, I subtract everything below some value that is less than 1 (0.9 in the image). The closer you set this to 1, the more it will look like it's infinitely thin, but the higher you will have to set the density to make it appear opaque.

The multiply node controls the density. The higher you set this, the more it will look like an opaque surface.

The Volume Absorption and the Volume Scatter are the shaders at work here, and the Add Shader combines those. You need not use absorption and scatter exactly like this, and you may use Mix Node instead of add, if you prefer. Just to remember to use volumetric nodes, and connect to the Volume socket of the Material Output node. The usable shaders for volumetric shading are Volume Absorption, Volume Scatter and Emission.

The Texture Coordinate connected to the Color sockets of the shaders, just maps the shading coordinates to a colour. Red along the X axis, green along the Y axis and blue along the Z axis.

Here's the result:

And here's an example .blend (it's not exactly identical to the example, but the concept is the same):


Creating the base meshes - step by step.

In this short tutorial I will only cover the creation of the base mesh without the materials.

Add a single uv sphere, hit S followed by 2 to scale it.
Select the vertices for the chunk you want to cut out by going into top view, hitting B and box-select the vertices. Double-check by rotating and selecting/deselecting additional vertices.

Hit X and select "Faces" to delete the selected faces.
Go into object mode, then go to the "Modifiers" Tab in the Properties Window, select "add modifier" and chose "Solidifiy".

Change "Thickness" in the Modifier settings to your liking.

Add another uv sphere and scale it until it fills the inner part of your solidified sphere (hit S followed by 1.6 to match the values I used in this example)


Is there a way to erase all image data blocks for a specific .blend?

When you have a data block that has no users it will automatically be removed when you save your project and reload the file.

Blender does not delete data right away as someone may have a use for it still. An example is if something has been imported/linked/appended and has not been assigned to an object yet. Obviously you want it to stay in memory until it is given a user or else it would be gone as quickly as it was loaded!

To recap simply save your scene and reopen it and all your unused content will go away. With the exception of data that you have specifically told blender not to delete even if it has no users. (You can do that by pressing the button with the letter 'F' on it.)


Blen4web and Alembic animation not playing

You might want to try baking your vertex animation with this dedicated tool available in Blend4Web:
https://www.blend4web.com/doc/en/animation.html#vertex-animation
See also this tutorial:
https://www.blend4web.com/en/community/article/48/


why is my texture repeating after UV unwrapping

The default when you make an image texture node is "Repeat":

If you set it to "Clip" instead it should only show your texture once

Hope that helps!


I read that Luxcore was working as a camera so if the image is too dark you need to add more light in the scene or it gets noisy.

This is not correct. The brightness of the image does not matter.

To reduce noise, you have these options:

Render more samples
Use the denoiser (in the render settings, "LuxCore Denoiser" panel)
Optimize your scene so you get less noise with the same amount of samples, or more samples in the same amount of render time (this requires knowledge about the settings in your scene, so I can not help with this without the .blend file)


Is it possible to set different textures and/or UV maps for the same mesh?

Yes, you can layer multiple textures with multiple UV maps on a single object. Here I have a project from last year in which I did so. For this example, we'll look at the stitches ontop of the leather texture.
On the left is my default (base) UV map for the main texture. I've highlighted the strip where the stitches go so you can see how it changes on the next UV map.

To create a new UV map, simply click the "+" in the UV Maps section in the Object Data Properties Panel. Here is the second UV map for the stitches. As you can see I've straightened the UV islands. I've also shrunk down the rest of the UV's I don't need so they are out of the way (that's the black spot on the bottom right corner).

Once you have got these two UV maps, you'll need to load the node editor to combine the two. Here is my setup to combine the stitches and the leather:

You'll start with your Principled BSDF and Material Outpode node. Drag in the two image textures you plan to use and connect them to a MixRGB node (displayed as just Mix) as shown. Connect the Mix node to the Base Colour input on your Principled BSDF node. Finally, create an UV Map node, and edit its value to be the name of the UV map you want to layer on (not your base UV). Connect the UV output to the Vector input of the image to layer on.
I believe for the texture you layer on, you'll need to save it as a .png with everywhere except your texture being transparent.


Making hair go straight up instead of following the shape?

Enable Advanced and Rotation, then set the Initial Orientation to Global Z:

Note that you'll have to rotate your objects so they are facing either the +X or +Y direction instead of the +Z direction. See Why are the objects in my hair particle system not sitting on top of the ground?.

By using this technique the orientation of the particles is kept independent of their size, and you can add some random rotations via the Particle settings > Rotation > Random settings:

Adding such randomizations will help make repeated use of the same models less noticeable.


Round values of a f-curve to be either 0 or 1

Add an Envelope Modifier with the following settings:

Reference Value: 0.5
Min: -0.5
Max: 0.5

Add a control point to the Envelope and use Min and Max bounds of “large” absolute value, but between the allowed range of -10000 and 10000, e.g.:

Frame: 0
Min: -9998
Max: 10000

Finally, add a Limits Modifier with Minimum Y of 0 and Maximum Y of 1.

The control point's Min and Max values are important when you care about the rounding of the input value 0.5.

With Min and Max equally distant away from the reference value of 0.5, the input value of 0.5 will not be modified.
e.g. Min = -9999, Max = 10000.
I used a slightly larger value of -9998 for Min so that the input of 0.5 will be rounded up.
You can use a slightly smaller value like -9999 to round the input of 0.5 down.

The size of the bounds will determine how well this method works for values which are close to the reference value. F-Curves with easing near it or keyframes obtained by simulation or experiment might produce numbers which will not be pushed all the way to the intended limits.
For example the image below shows the result of a sinusoidal ease-out over frames 0 to 10 with input values 0.499 to 0.5. Frame 9 ends up with a value of about 0.75 instead of 0.

It's not possible to change the control point's bounds beyond 10000, but if you work with values close to 0.5 you could duplicate the envelope modifier:


Rigid body - Fall in fron of camera / loopable

Problem solved.
Initially wrong approach was chosen.

I installed a brilliant Animation Nodes addon, which did the job perfectly.


What is the optimal topology for a base with square corner meeting a cylinder?

This topology seems to work fine, no visible pinching if you move the vertex a bit:


That person probably used the space tool from the LoopTools Addon.

To activate the LoopTools Addon, go to the User Preferences Window and find the Addon in the Addons tab (CtrlAltU > Addons > Mesh > LoopTools), then Check the little checkbox on the right.

After selecting a bunch of verts, use the Space Tool from the Tools Shelf > Tools tab > Looptools, or via the Specials Menu (W) > LoopTools > Space.


How to make a Morph Object follow the surface of a model

You could do it this way:

Create a bone at about the center of the eye.
Put you pupil in front of the eye surface.
Create a plane at the same position, subdivide it a bit.
Parent the plane to the eye bone With Empty Groups then in Edit mode assign the vertices group to the plane.
Give your plane a Shrinkwrap modifier. Choose the eye as the Target, but don't display this modifier in the viewport yet (deactivate the eye icon).
Give your plane a Subsurf modifier.
Give your pupil a Surface Deform modifier, choose the plane as Target, click on Bind.
Give your pupil a Subsurf modifier.
Give your pupil a Copy Location constraint with the plane as Target.
Select the plane and activate the display option (eye icon) of the Shrinkwrap modifier. The plane should stick to the eye surface and the pupil should follow.
Make the plane invisible: Properties panel > Object > Cycles Settings, deactivate the display options.
To change the eye shape, select the plane and create some shapekeys.
Now maybe give your eye bone a Damped Track constraint to make it point to a target as explained in this video: https://www.youtube.com/watch?v=OItHr4VRP7M the eyes targets will need to be children of a central bone, in front of the nose, that will be child of the head bone. If you want to give some constraints to your pupils position you should probably give this central bone a Limit Location constraint.


Render with artifacts and errors (sharp teeth in the shadow area) for basic paint texture

this looks like eevee. these things can happen in real time engines, they are called Shadow Acne. you seem to have a very pixelated shoadow map.
Look in to the shadow tab on the poperties bar to see what shadow map resolution you have (default 512px)

but they can have multiple solutions and causes, I suggest you read this article to understand more about them.

https://learnopengl.com/Advanced-Lighting/Shadows/Shadow-Mapping

but after i watched the video you sent in it seems more to be some sort of a bug with blender itself. using a different verson migth fix the issue


Why can't i click on "Draw Curve" in Blender 2.78

I tried some stuff and it and it seems like it doesn't generate a new object (a curve).

It did work after i added a Bezier curve myself. After adding a curve i just went to the toolshlef and was ready to use it to align the curve with my drawn curve


Duplicated objects created in Blender Render are invisible in Cycles

Navigate to Object properties, Cycles settings tab:

Turn on all Ray Visibility types:

Leave Shadow catcher unchecked.

But i will vote for close, becouse it's #5 from here: Why does my object not show up?

  Cycles camera visibility disabled in object settings


Blender Python: Generate custom property (due to error bpy_struct[key]: key "PropertyName" not found)?

When a custom property is accessed as obj["custom_prop"], it will throw an error in the console ('bpy_struct[key]: key "PropertyName" not found') if that property has not been assigned yet. To fix this, you can instead use obj.get("custom_prop", DEFAULT_VALUE). This will not throw an error, and will return the default value if the property doesn't yet exist.

I'm assuming we should ALWAYS use the syntax obj.get("custom_prop", DEFAULT_VALUE) instead of obj["custom_prop"]? Can anyone confirm this? Or at least in situations where we may be reading the value before writing to it.

I'm very new at this, so anyone feel free to chime in here.


You could select the edges on the border using AltRMB  in Edit Mode. Press space to show the popup menu and type Grid Fill.

If you want the filled area flat you can scale the z-axis SZ0.

In order to edit a high poly mesh in Blender created by sculpting or importing 3D-scans usually retopology is required.

Related:

How should I handle a split in a retopology?
Is there a way to "rescue" mesh that has very bad topology?


Scroll down to Cache inside the physics settings. Switch the Cache Type to modular. Replay (the default cache type in 2.83+) will allow the simulation to run when you are playing the animation, modular actually bakes it onto the disk.  You can also switch it to Final to bake everything at once, but note that final bake.
A lot of people have this problem when they watch tutorials done in a previous release of blender and don't know what to do because some things changed. Reading the documentation should clear everything up. It is written very clearly. https://docs.blender.org/manuel/en/latest


If i scale down parts of my UV unwrap, how can I make the rest utilize the new space?

So you want to arrange UV islands within the UV space.

Select the UV islands you want to arrange
Go UV > Pack Islands
Done


Try dissolving the coplanar faces (the vertical side and the face on top of it). Worst case scenario you could do it with a boolean operation on a basic cylinder and the knob profile.


How to fix final render causing issue by having pixelation using cycles?

Welcome to Blender Stack Exchange!

This looks like an issue known as Z-fighting. What that means is you have some geometry that is very close together, so close that the camera doesn't know which one is on top, thus you get a mix of both.

From your images it looks like there is a blue shell that overlays the white body of the controller.

To fix this, a possible option is to remove the part of the white body that is under the blue shell. This will get rid of the geometry that is too close, and also make it faster to render since there will be less geometry.

Another possible (and much easier) option to try is changing the Clipping settings in Camera tab of the Properties Panel on the right. Try increasing the start value (to something like 1) or decreasing the end values (to something like 30-50). Typically adjusting the start value will be more effective.


I had default window layout chosen and not "Modeling" one.


Dyntopo adds vertices but does not deform mesh

It would appear that your custom brush type is set to simplify, change it to something that deforms the mesh.

From the manual page

  Simplify - This brush collapses short edges (as defined by the detail size) whether or not the Collapse Short Edges option is enabled. This brush has no effect if dynamic topology is not enabled. It can be found in the Brush ‣ Sculpt Tool menu.


Context is incorrect when calling from a timer

Override the context.

With the timers running partial functions in their own thread, cannot rely on having many context members available. The usual suspects window, screen, scene, object will be None.

One exception is the window manager.

Test script, starts the timer with the index of the context window in the window managers windows collection.

From the window, the screen, area, space and region can be added to a context override dictionary to pass to the operator.

Test script, renders the largest 3d view open in the current screen.

import time, bpy, functools
from bpy import context

def render(od):
    timestr = time.strftime("%Y%m%d-%H%M%S")
    print(timestr)
    # uncomment below line for error...
    bpy.ops.render.opengl(od, animation=False, sequencer=False, write_still=True, view_context=True)
    return 5.0

def loop(idx):
    window = context.window_manager.windows[idx]
    screen = window.screen
    views_3d = sorted(
            [a for a in screen.areas if a.type == 'VIEW_3D'],
            key=lambda a: (a.width * a.height))
    if views_3d:
        a = views_3d[0]
        # override
        o = {"window" : window,
             "screen" : screen,
             "area" : a,
             "space_data": a.spaces.active,
             "region" : a.regions[-1]
         }
        return render(o)
    return 2.0

#f = functools.partial(loop, bpy.context.screen.name)

if __name__ == '__main__':
    idx = bpy.context.window_manager.windows[:].index(bpy.context.window)
    bpy.app.timers.register(functools.partial(loop, idx), first_interval=5.0)

Note: The big issue here re polling is not all context is available to the timer thread.

for k, v in bpy.context.copy.items():
    if v is None:
        print(k)

in loop method above will demonstrate which context members are not available (set to None).

and hence would recommend using a modal timer operator (wired to use context), that you could turn on and off from a button

Related

How to run a python script at regular intervals?

Need help moving a set of cubes from one end to the other on x-axis with python scripting


How to get rid of deformations of poles caused by sub division?

This method greatly reduces the impact the poles.

Add a knife cut close to the front of the nose.
(enable cut through z and angle constraint c)

Final Result


Why can't I see the Physics button on the world panel?

They are in the "Scene" section, not on the world.


How can I make a track for an object in Blender Game (not blender render)?

You can use the Edit Object Actuator and set it to "Track to". Set the Object you want to track to in the Object Picker and choose the track axis. If you pick x it will point with the x axis to the object to track etc. If you want the object to rotate only around the z axis, don't enable 3d. If you want every axis, enable 3d. UP axis should usually stay z if you didn't rotate your object in a strange way (it means z will point up).

Suzanne tracks to the cube on the y axis

with 3D enabled she also lifts her head for it.


The only way to do this in Blender is to change the Audio Strip's pitch value. Its in the Strip's properties panel in the VSE (N key). But it won't change the length of the strip nor will it change the waveform for you to see where the sound has stretched to. I would suggest doing an Audio Mixdown after the pitch change and re-importing it.

But honestly the sound will change to much, why not use Audacity free Audio editing software, it is open and there are portable versions available. It will do speed changes much better than Blender.


First you have faces that don't stick together, you can fix this with an altM > Merge By Distance, and play with the distance parameter in the last operation box (bottom left of the 3D view).

You'll still have artefacts where the triangles are very stretched, you should better use quads, but if you are lazy you can cut your triangles with additional edge loops (use the knife tool) and it will improve the shading.


Is there a way to replace an object in my scene with a different one?

If the objects are all of the same type (mesh, curve, empty, etc) you can use the make links menu.

Select all objects you want to replace, then Shift-Select the "master object" you want to replace with making sure it remains as Active Object.

Then press Ctrl + L Make links > Object Data.

You can also access it from the Object > Make Links > Object Data menu in the 3DView header.

If objects are empties with duplicated collections use the Instance Collection option instead.


Animation: create a rotation around the object z-axis instead of global z-axis

Set  Rotation type to ZXY Euler, then the animation around the local axes works like a charm.

Here is an Example Blend File for inspection: http://www.pasteall.org/blend/31685


Yes. Size property under Display category in the Camera tab in the Properties Editor is precisely for that - the size of the camera displayed in the viewport.


Material that recieves shadows but no shading

The closest I think I can get is to use a toon-ish style shader on the bottom plane. This leaves the plane flat-shaded, but allows for pure black shadows (remember to set the ColorRamp to "constant"). However, as you can see, the falloff from the point light also gets cast in black as well. This can be solved to an extent by increasing the size of the light source, but doing this causes the shadow resolution to suffer as well.
Here is an example using a point light:

However, if your mesh objects are sufficiently small (can be scaled down), this issue becomes negated:

As Markus pointed out in his comment, changing the light type to Sun fills out the plane (regardless of the size of your mesh), but the shadow quality properties will likely need to be increased to make the shadow look "cleaner" (less aliased), but it still may not come out perfect:


Game Engine - Smoke Trails For Moving Objects?

I cannot think of a solution that does not require coding.
One simple-ish solution is to stretch the sphere based on the velocity, so that it is forced to join with the ones infront/behind.

Consider using an object that deforms. This means that there are no particles that spawn far enough apart to be distinguished. This method is used in some AAA titles such as Tomb raider:

There is an small analysis of this effect (where I pulled this image from) over here.

Unfortunately there is no built-in method for doing this, but I have done it successfully in the past. For example, the trails in this video are done using a python script to manually move the vertices:
https://youtu.be/l1PHHe-kz4k?t=1m2s
Monster has made a demo of a similar system available here.

It may be possible to do something here with an IK armature and some physics object that 'lag' behind the target, but I have not tried it.

I have also seen demonstrations of GPU based solutions using a custom vertex shader. This should offer a lot more performance but is beyond my current GLSL programming skills.


Inverse Kinematic Panel disabled from Bone tab

Stupid me...

As soon as I added an IK (inverse Kinimatics) Constrain from the Bone Constrains tab, it worked....


How to draw curved symmetric lines within a shape

Curves can be a little different from editing meshes but with a little practice can be easy to work with. The array and mirror modifiers also work with curves to help you get the symmetry you are after.

Here I have one small curve with an array and a mirror. You can see the red handles on the real curve piece. To get some thickness to the curve you only need to turn up the bevel depth. You can also use another curve as a bevel object to get a unique shape extruded along the length of the curve.

If you have a bad join between the array pieces like this

you can enable merge in the array modifier and increase the merge distance if needed. You should also adjust the handles on the curve so that the start and end of the curve are pointing straight at each other for a clean merge.

And if you have a non-circular bevel shape you may want to twist the points using CtrlT. With a square bevel you can get the twisted look you get on iron gates.

You can easily convert the curve to a mesh object with AltC


EEVE: material preview displays nicely gloossy with default world, but fails with scene world (screen space breaks everything)

Your object looks different in material preview than in your final render because you have a highly reflective glossy surface and in material preview the preview HDRI is contributing things for the surface to reflect, but with just your scene lighting there's nothing to reflect.
The object is much darker with world lighting because the HDRI from material review is contributing more light to the scene than your lighting panel.
The comment pointing you to the other question was meant to point out that if you used an HDRI in your world, you would not have this problem.  Here are some examples.
material preview:

Mine looks different than yours because I have a different HDRI in material preview.
world space, low lighting, no HDRI:

world space, high light, no HDRI:

world space, different HDRI:

In the last I selected film->transparent in render properties.
Without transparency:

Lighting matters a great deal in what a material looks like when it is rendered.
You add an HDRI to your world lighting by going to the node editor, selecting "World" rather than "object"; selecting "Use Nodes"; and then adding something like this:

Then open up an HDRI in the orange box and that applies that HDRI to your world lighting.


Revert vertex position to Basis Shape Key

Use Blend From Shape:

Select all vertices whose positions you want to reset,
Execute Blend From Shape, accessible from W, Ctrl-V or Mesh > Vertices menu,
Set "Basis" as shape key to blend from (by default),
Set blend factor to the maximum value 1.0 (by default),
Uncheck Add, so only values from "Basis" will be blended in, effectively reverting all selected vertices' position.


You can use these 2 ways to make the mesh follow path which isn't contiguous.

Making the path contiguous

This way assumes keyframing either the Evaluation time property of the curve:

or the Fixed Position option of the Follow Path constraint.

You set the keyframes so the animated mesh jumps from one curve part to another.

The mesh will now jump over the connection of the curves.

Adding several Follow Path Constraints

You can leave curves as they are, and add adjacent quantity of the Follow Path constraints, animating both Fixed Position and Influence options.
For more details see How to make an object follow a complex curve


You may have disabled Meshes in the View Object Types menu.

Or less likely might be in tweaks mode, click and hold the mouse to change back to box select.


Position, Rotation and Scale blocked when I imported model with animation, any help?

I faced similar issue once, but It turns out that my position rotation and scale parameters in the Item Transform property panel was locked. U can try unlocking it.
But since this is an animation, I would advice checking your scale in each keyframe to make sure that its not changing.


In the viewport overlays dropdown menu for the 3D View there are options related to normals as you know:

Not only do you have to select the normal, but to see it you have to set the size to something reasonable for the scale of your model:

If you're still not seeing normals, please share the blend file.


Blender render or camera view clips my object or shows nothing

Ok, so a couple things going on, but they're common mistakes that people make, especially early on (and sometimes later!).

The primary problem is that your object is scaled to gigantic proportions.  Select all objects (A) and scale them down (S) to .05.  Move everything so that your Zamboni is back in the center of the grid and resting on the grid, just for (optional, just for aesthetics and to keep a reference point).

:edit:  I forgot the 2nd part.  Though the above will solve your view problem, it would be a good idea to select your Zamboni after you've got it all scaled down, and press Ctrl + A which will apply the current scale as the objects default scale.

In blender there are essentially two scales for a mesh.
First, you have it's size according to the mesh (the actual geometry).  But when you're not in edit mode, but in object mode (when you press Tab you are toggling between the two modes) and you scale the object, the mesh size, according to Blender, is staying the same.  But the object size is getting bigger.  A bit tough to understand, maybe, but think of it like this:

You have a cube in blender that is 2 foot x 2 foot x 2 foot.

You decide to scale it up 2x by going into edit mode, selecting all the vertices, and scaling them up 2x.  Blender now sees your cube as 4'x4'x4'.

But lets say instead you take your 2'x 2'x 2' box and and scale it up in object mode by 5x.  Blender doesn't actually see a 10'x10'x10' box.  It sees it as the original 2'x2'x2' box multiplied by 5.  So essentially like this (2'x2'x2')x5.

This is important for many simulation type things, but it can cause problems when your object is so extremely large that Blender doesn't quite know how to display it.

So going back up to the Ctrl+A command and applying the scale, your telling Blender that the size that the object is, is the size that you want to be the default 1x scale.

Taking the cube example I made above, if you scale a cube up 5x in object mode, giving you the (2')x5 cube, then press Ctrl+A Blender now sees your cube as a 10'x10'x10' cube.

I hope this is clear, let me know if I can clarify anything for you.


Try using bpy.props.EnumProperty. Its items argument accepts a list, or a function that generates it from context data. For example, I could feed this function:

def get_enum_items(self, context):
    obj = context.active_object
    groups = obj.users_group
    group_names = [g.name for g in groups]
    return [(gn, gn, 'Instance group "%s"'%gn) for gn in group_names]

as item list generator to this property:

group = bpy.props.EnumProperty(
    name = "Group", items = get_enum_items,
    description = "Group to instance.")

so it will construct a list of groups the active object is contained in, on the fly (full code here). I think you can use this method for any named custom data.


How difficult would it be to implement on-the-same-track transition?

If you are transitioning from one clip to another, you only need one track. Position the tracks in the order you want. Select the first clip, then shift select the second (both tracks selected). Now add a cross effect. Right click on the end of the first clip or the beginning of the second clip. Now hit "G" and move the selection to the desired length for the transition.


No, alpha clipping refers to the amount of clipping applied to the alpha channel in the viewport (that is, what gets transparent and what gets solid in a face with an RGBA texture).

"Premultiplied alpha" refers to one of the two possible alpha modes:

Associated or Premultiplied
Unassociated or "straight" in Blender.

These alpha "modes" define which alpha over formula has to be used for blending the plate over a background.

When alpha is "associated", the alpha-over operation will simply add the foreground plate to the background previously scaled by the foreground's inverted alpha.

When alpha is "unassociated" (straight), the foreground has to be pre multiplied by its alpha channel before the aforementioned operation, because the pixels with alpha 0 have RGB information that otherwise would be added to the background (and in the case of an unassociated alpha, it's not desired).

The term "pre multiplied" refers in the first case to the fact that the foreground doesn't have to be multiplied by alpha by the over operation, so it's considered as if it was already "pre multiplied".

For that reason, it's adivisable to avoid the term "pre multiplied" becuase it suggests that there was a multiplication (which actually didn't happen). Alpha is "associated" as if it was already "pre multiplied".

Associated alpha allows more nuanced compositing effects than unassociated, as it allows to composite pixels that are both transparent and luminous, therefore is usually the recommended format for VFX (and it's the format that renderers like Blender's internal and cycles produce).


How to align 3D viewport along two 3D points using python

Track to quaternion.
Can get the quaternion rotation of any vector using Vector.to_track_quat(track, up) and assign an axis to track and an axis for up.
Test script to make the largest 3d view in the area track from the scene camera to the active object.
import bpy

context = bpy.context
scene = context.scene
cam = scene.camera
ob = context.object

start = cam.matrix_world.translation
stop  = ob.matrix_world.translation

norm = start - stop
norm.normalize()

q = norm.to_track_quat()

viewports_3D = [
        a
        for a in context.screen.areas
        if a.type == 'VIEW_3D'
        ]

viewports_3D.sort(
        key=lambda vp: (vp.width * vp.height),
        )

# use max area vp
if viewports_3D:
    vp = viewports_3D.pop() # largest
    r3d = vp.spaces.active.region_3d
    r3d.view_rotation = q
    r3d.view_location = start #lookat this point
    r3d.view_distance = 0 # from this far away

Note above uses default for track to so vector is flipped, more concise would be
norm = stop - start #start - stop
norm.normalize()

q = norm.to_track_quat('-Z', 'Y')

This is equivalent of the result of adding a track to constraint on camera to object. Have used to test


PC "not responding" when I use the Subsurf and Bevel modifier at the same time

Blender can become unresponsive if

the combination of modifiers creates a large amount of Faces

Make sure the subsurf is turned to a low level when applying the bevel modifier!
Also keep in mind that changing the order of modifiers affects the order in which blender processes them.

placing the subsurf as the second modifier includes the bevel in the calculation

If neither of the above causes the problem, try a different version of blender or a new file.


Here's a simple add-on that'll clear the BVH cache.
It's a one-click process that works quite nicely! Enjoy!

https://github.com/gbolet/BlenderCacheManager


Should "convert premultiplied" be enabled when using "alpha over" with render layers?

Raytracing engines are only capable of generating The One True alpha, associated alpha. However, encoding to file formats may have an impact on how the alpha is encoded.

It makes sense when one stops to realize that alpha represents a degree of occlusion at the spatial “pixel” geometry level. That is, it is useful to think of the pixel window as a rasterization of geometry. How much of the window does a portion of the geometry cover? What is the emission value? How occluding is the geometry? Can we model high emission with no occlusion such as the case of flares, glares, fires, glows, etc.?

Only associated alpha is capable of modelling this duality of emission and occlusion. Therefore, “Convert Premul” should rarely be used, and used with caution and informed application[1].

[1] Historically, Blender has long suffered from alpha issues that continue to this day. The Viewer window, for example, still continues to have alpha problems when compositing against a fully transparent background. Always test your composites against a temporary solid colour to avoid the problems with the Viewer. PNGs, being strictly unassociated, used to require the “Convert Premul” toggle in the compositor, but I believe this has been rectified and the alpha is converted in the compositor. TIFFs should be associated alpha in their alpha plane, with an optional TIFF tag for unassociated. Blender incorrectly interpreted alpha in TIFFs as of testing a year ago. EXRs store associated alpha representations of the render buffers, and are by far the best file encoding within Blender.

Further information:

Why should I never ever use "Convert Premul" on Cycles renders?