How can I modify the mesh of a linked character? I have a fun problem:

In character.blend I have an armature and a mesh with shapekeys inside a Group. In a new scene (pose.blend) I have Linked in Group. I then created a proxy (Make Proxy) and posed out the character. Now I'm noticing a small problem that I would like to fix for just this pose.blend file. How can I modify the mesh?

In my Outliner (under All Scenes) I have:

character which is just an empty containing everything that was in
the group, however I cannot select the mesh or armature
character_proxy which is the armature that I was able to move and
manipulate

Some things I've tried:

Making local the whole group. I still cannot select the mesh
Making local the objects in the outliner, the mesh is no where to be found and I cannot edit character (it is stuck in Object mode.)
Running Make Single User U on character or character_proxy, there is still no mesh, and the mesh is not selectable from Groups Outliner.

Now I did successfully do this (thanks Olson from #blender irc!):

Select character from the outliner and Make Proxy the mesh
Make the mesh local and then manipulate it.

This works but the problem is the mesh is in T-Pose (ignoring the armature.) I can 'fix' the pose but it is cumbersome (since it is not posed out.)

Any help would be appreciated :D!

Just link in the character rig's group as usual, then append the object. It will be shown read-only in the outliner. To make it editable, select the object through the outliner, then convert both the object itself and its mesh to local instance.

Using Make Proxy for mesh object isn't recommended, because it will lose all modifiers and vertex groups:


Is there any way to publish game for android I know about blender for android but that's just blender player and no export/publish for android.

Is there any way for build a single android apk from blender game?
No Gamekit, is there another way ?

No, the game-engine was ported to Android for a GSOC project, but this didn't make it into an official release yet.

There is however work being done for Blender to use EGL, which will help Blender run on Android and Wayland in the future. (The soc-2014-viewport_fx branch).


How to keep the object size constant while it is moving? I need to move an object in depth without automatically changing its size. Is it possible?

Blender automatically scales the object's size when the object is moved in depth according to the principles of perspective. I want to manually control the scaling.

If you  place your pivot point at the camera ( e.g. 3D cursor to camera, then '3D Cursor' selected as pivot center), when you scale your object in all axes (or any element of it, in edit mode,) the shape will not appear to change in perspective, when seen through the camera. If you then want to 'scale the object manually', you can do that in some other space, say, by setting the pivot to 'Median Point'.


Import normals doesn't work Trying to import model to Blender 2.67 using guide:

http://wiki.xentax.com/index.php/Blender_Import_Guide#Vertex_normals

But importing normals doesn't work.

Code sample:

...
mesh = bpy.data.meshes.new(obname)
mesh.from_pydata(vlist, edges, faces)

from bpy_extras import object_utils
object_utils.object_data_add(context, mesh, operator=None)
...
vindex = 0
for vertex in mesh.vertices:
    vertex.normal = (0, 0, 1)
    vindex += 1

All normals must be oriented along z, but they seems to be random.

It seems like importing normals is impossible with 2.67 version of Blender. Blender recalculates them manually.

But for version 2.74 you can import custom normals using code sample:

normals2 = []
for l in mesh.loops:
    normals2.append(nlist[l.vertex_index])
mesh.normals_split_custom_set(normals2)
mesh.use_auto_smooth = True


2.8 - Do I still need to mark each animation action for saving? In Blender 2.8, do I still need to mark each animation action for saving, or will it retain the animation action datablocks when I close Blender down?

I'm sorta used to having to doing some extra clicks in 2.7 etc in order to preserve my animation actions, so that they're retained when Blender shuts down.

After some tests with 2.8, it appears that the animation datablocks are being saved by default, but I'd really like to get confirmation on this from the horses mouth - or from users used to using this feature.

So, did a little extra checking on the Blender Artists forums and it seems that, for the moment at least, Fake User is still required.

thedaemon:

  I’m still going to turn on Fake User because of the loss of animations
  before they fixed it. I don’t honestly know, I ran a test and it seems
  to save, but that was a quick test.

zeauro:

  Actions saving requires a user. If action is used by an animated
  object when Save operator is called : action is saved. If action is
  removed from object that is no more animated when Save operator is
  called, it appears with a 0 next to its name in actions list : action
  will be lost. If action has a fake user, you pressed shield icon
  before removing it from object that is no more animated when Save
  operator is called, it appears with an F next to its name in actions
  list : action is saved.


Render solid color in Eevee I wan't to create a segmentation map for machine learning.
For that I have a list of colors like:

clouds  #aaaaaa
cow     #4f445b
grass   #1dc331

It is from absolute importance that the render has the exact same colors.

I tried:

And:

But in the render the colors are off.
How can I get a render with the exact colors I give?

There are mainly four steps you should take, when following your approach with emissive materials in Eevee:

In the Color Management panel, set the View Transform to Raw (if you're not saving as OpenEXR)
Use the RGB slider to set the color values or be aware of gamma correction
Be aware of floating point inaccuracies or use OpenEXR as file format with Float(Full)
Disable anti-aliasing

The first point ensures that the exact scene referred values are stored without mapping them to different values through the view transform. The filmic view transform would be useful for realism when rendering a scene, but not for non-color data such as masks.

The second point ensures that you don't get confused with the gamma correction. By setting it through the RGB slider, you're directly entering the values used in the scene without gamma correction as explained in the manual. The output will therefore contain these exact values when using the raw view transform as long as the image format can represent them. You can use the hex values, but be aware that they are interpreted as gamma corrected. This is common practice, but I've seen people get confused by this.

  In Blender, the Hex and HSV/HSL values are automatically gamma
  corrected however, for the RGB values, they are in Scene Linear color
  space, and are therefore not gamma corrected. For more information,
  see the Color Management and Exposure page.

The third point ensures that the selected color value can be accurately represented in the image format and is exactly the floating point value you chose in the color picker. If you use OpenEXR, you don't have to set the View Transform to Raw because it already stores the raw values. Of course you can choose a different image format, but it may not be able to represent the color accurately because of lower floating point precision or because it uses the [0-255] range per color channel.

The last point ensures that only the exact colors appear in the image an no blending between colors happens in adjacent areas. When using Eevee set the Filter Size in the Film panel to zero, for Cycles select Box Filter.

There are other options to accomplish the same task in the compositor. For instance if you'd be using Cycles, the Cryptomatte would give you masks for objects or materials.


Grayed out appended Hemi lamps from older blender with odd behavior I'm new to blender and 3d rendering in general so the answer to this may be obvious but I could not find an answer online wherever I looked.

I appended a satellite from one of NASA's blender files when I noticed something strange in my renders. The lighting was different from what the render view showed. That's when I noticed 2 grayed out sun lamps labeled Hemi_1 and Hemi_2.

I almost liked the difference that it created in the final render (adding more light and less solid black on the dark side of the earth, showing hidden detail) but it bugs me that I can't preview the effect that they are having on my render. I am aware that blender used to have hemisphere lamps that have since been removed and that these are most likely those.

What I want is some way to make them not grayed out and visible in previews. As you can see in the photo, they are not hidden and I see no reason for them to be grayed out like this.

Those two hemi's appear to be disabled in viewport. This is different to hidden in viewport, which is the eye button. disabled in viewport is the computer screen, as you can see in the first image.

If you click the Filter button next to the search (image below), you can then select what options appear next to the name of the object. Also, you can see that the cube here is disabled in the viewport, and is grayed out because of that.

You want to open it, and in particular, turn on the 'show in viewport'.

Here I have enabled show in viewport, and the cube is now visible for me in viewport.

I hope this helps, and if it's not this issue, then I guess it's something to do with 2.79 hemis in 2.8.


run python script from network? I'm looking for a way to execute blender, in background mode (-b) and giving a python script (--python <filename>) which is available in the network. For example :

blender.exe -b --python  \\Host\Dev\blender_setup.py

Currently Blender is looking for the script adding the current folder from which the .bat was executed (or C:\Windows if the batch file was in a network path). I've tried many syntaxes (//, \, \\, "\...", etc) and apparently I can't without mapping a network drive. I always get something like :

  OSError: Python file "C:\Users\flavio\Desktop\Host\Dev\blender_setup.py" could not be opened: No such file or directory

As you can see in bold, Blender is not looking in the right place

EDIT : Without mapping that network folder to a network drive and without simlinks. It would be too easy :)

Any clue ?

EDIT 2 : Waow, actually any network paths, even for .blend file, are not working. This is very tricky for a renderfarm. The following paths (no matter the /, //, \\, \\\\ etc) will give the same result :

  blender.exe -b \\192.168.0.5\...\myFile.blend -a -x 1 -o

or

  blender.exe -b \\HOST\...\myFile.blend -a -x 1 -o

Will give the following error message :

  Warning: Unable to open 'C:\Users\flavio\Desktop\192.168.0.5...\myFile.blend': No such file or directory

(if the .bat file is on my Desktop)

It's fixed on Blender 2.71 for windows.

(As part of our network is still using XP we are stuck on 2.70a, and I didn't had the chance to test 2.71)


Is it possible to edit the selected text via Python in the text editor? I would like to create some tools for the text editor, for example, I would like to create at this moment a small operator that taking the selected text, transforms it into all lowercase or all uppercase text, in short, a simple thing like
txt = txt.upper()
txt = txt.lower()

I would have many tools to create for convenience, but I am not familiar with how to interact with this workspace

Here is an example of a script that makes the currently selected piece of text uppercase. So the main thing here is the Text object of the space data which also has some other attributes you can use. The SpaceTextEditor might also have some usefull functions.
import bpy
text = bpy.context.space_data.text
fschar = text.current_character
fsline = text.current_line_index
fechar = text.select_end_character
feline = text.select_end_line_index

# The end and start lines and characters can be switched
# depending on the direction in which the text was selected
schar = min(fschar,fechar)
echar = max(fschar,fechar)
sline = min(fsline,feline)
eline = max(fsline,feline)

original_text = text.as_string()
lines = original_text.split("\n")

for line in range(sline, eline + 1):
    cur_line = lines[line]

    start_char = 0
    end_char = len(cur_line)

    if line == sline:
        start_char = schar

    if line == eline:
        end_char = echar

    # Uppercase the selected part of this line
    new_line = "".join((cur_line[:start_char], cur_line[start_char:end_char].upper(), cur_line[end_char:]))
    lines[line] = new_line

new_text = "\n".join(lines)

text.from_string(new_text)


Can I enable antialiasing in the solid view during orbit / pan? I seem to recall a setting that would enable anti-aliasing during viewport transforms in solid mode, but I can't for the life of me remember where this setting is or if it even exists. I think it was called something like "Fast Preview" or something similar.
I've installed a few different Blender builds and I'm concerned my preferences may have gotten corrupted and/or this setting was disabled inadvertently.
Here's a pic (this is during orbit):

Notice the jaggies on the bottom of the left chair.
Anyone know how to do this?

You can control the Viewport Antialiasing from Preferences > Viewport > Quality:


Is there a way to change the size of the viewport grid in 2.8? In versions of Blender before 2.8 you could change how much of the grid was visible in the viewport.

Is there a way to have it so it's smaller like it is in default Blender 2.79a?

Essentially, no, 2.80 doesn't let us do that any more. The grid was completely rewritten and the option to control its bounds was removed. Having said that, you can reduce the clipping distance, but that just fades out with a gradient instead of having a defined edge, and also clips meshes so it's not really what you want.
If there's strong arguments for getting that brought back, it would be worth writing up a proposal on the community forum (rightclickselect).

There has been some minor discussion of this point there previously, but it seems to have faded away.
eg this discussion:
https://blender.community/c/rightclickselect/nfdbbc/


Why is blenders hair system making spikes? I am using a hair/particle system but all of the hairs look like spikes not hair:

How can I set it so they all have a consistent thickness and how can I adjust the thickness?

The setting for hair particles in cycles are in Particles > Cycles Hair Rendering and Particles > Cycles Hair Settings.

To make the hairs a constant thickness, set the root and tip thickness settings to the same value and disable Close Tip:

To get a cylinder-like result, you will also have to disable Particles > Cycles Hair Rendering > Cull Back-faces so the backs of faces are not hidden:

See the manual for more information.


How to draw a single graffiti over the multiple objects? For some reason, I have a table made from separated wooden planks that shared the same material, and I'd like to draw something on this "surface". How do I do this dynamically, without ripping the overlaying texture apart and manually assigning chunks to each plank?
What's the correct name of this problem/technique?
Rough example with window-mapped texture, just for demonstration:

Use the 'Object' coordinates of the Texture Coordinates node with the 'Object' property set to the same object for each of your meshes. This will use the same coordinates for each mesh so that the texture can be mapped over all of them.
Here's an example :

Each of the cubes is a separate object - all with the same material. Note that the Texture Coordinate node is set to 'Cube' (one of the cubes) for the Object. This means that the Object coordinates are always with respect to that specific object. The Mapping simply allows you to scale and position the image.
The 'Separate XYZ' and 'Less Than' nodes use the Z-channel of the Generated coordinates so that the texture is only used for the upper surface of each cube (otherwise it would also show down the sides and on the bottom).


Dealing with Artifacts in The Render? Please help, I am going insane trying to deal with this. I am pretty new to blender but i've just completed building a character. The face is pretty intricate and I had a feeling it was going to be a problem come rendering time.

I'm now trying to deal with a bunch of artifacts showing up on the face (like those above the eyebrow),

Luckily, it's only the face that's showing this problem. Unluckily I can't seem to find a solution. I've spent the last 5 hours going in and deleting and dissolving edges and vertices and at the end of that period it looked no better, the issues had just moved to new locations on the face. Can anyone offer some insight? if I just knew what the issue was I could start trying to fix it properly. Right now I just feel like i'm trying to blunder through to a solution.

The problem here is all about that evil word good modelers often use:
Topology
Here are some ways to improve this:

Do some research on good mesh topology techniques and USE THEM

Use smooth shading

Your model looks far to detailed right now (as far as vertex count)...try removing some of the edge loops, and adding a subdivision surface modifier

A lot of your trouble is coming from vertices that are actually inside the mesh...try switching to wireframe view to pull these out (if you cleanup your mesh and use a subsurf, this will be much easier to do

Finally, like Anson said, you should be checking your normals often...hit Ctrl + N

The technique of modeling with a subsurf modifier is huge!


How can I move an object along it's local axis? I'm looking to move an object, just when I edit it, along its own axis rather than the world's axis.  Is this possible?  Also is origin synonymous with axis?

I can thing of two ways:

1) In the 3D view Editor header you can choose the transform orientation

2) lets say you want to move in in the local x axis: hit G  X X


Bake Normal space: Camera vs World vs Object vs Tangent The manual says:

  Tangent space normal maps are the most common, as they support object transformation and mesh deformations. Object space normal maps keep sticking to the surface under object transformations, while World normal maps do not.

Its a bit confusing to me.
I thought normals are those hair looking things that come out of faces and vertices.

so when they say "support object transformation"???
Does that mean its possible to disconnect normals from the mesh and have them float in mid air?

Can anyone re-phrase the difference between the different normal spaces?

Normal maps are an encoding of a geometry inside an image. Each pixel color (RGB) corresponds to a (XYZ) orientation which defines a fake normal for each particular point defined in the UV map.

If we take the example of the cube, unwrapped like this :

And if we bake in the tangent space (which means the space X Y in the face plane and Z along the normal), we obtain a flat image because the encoding corresponds to the face itself (so no alteration of the normals). This is like to say "encode me in my own space coordinates" :

If we bake from object space, this space is unique to the cube but each tangent space of each face is orientated differently from the object space point of view. That's why we obtain this below. And you can notice that one of the face has the same color as above because this face shares the same coordinate system as the object (in this particular case) :

Now from the normal map node, this is the same principle but inverted. The bake encodes the coordinates and the node decodes it at the render time :

World space : decodes from the global (world) coordinate system. It mean that the render will change if the object (in its whole) is rotating (not sure of that last point).
Object space : similar to the bake above. Encoded faces normals (point by point) are translated from the whole object coordinate system
Tangent space : each point of each face is decoded from the face coordinate system

We have seen above that baking in tangent space gives a flat image. So this seems to be useless. But in fact this kind of bake is generally used to bake a complex object (highpoly) into a more simple one (lowpoly). Here you use the 'selected to active' option when you are baking.

So what happens after that : the image encode the highpoly normals and the "normal map" node decodes it for the lowpoly rendering. That mimics the highpoly normals along the lowpoly faces.


Render Result doesn't match camera view I'm new to blender and am having issues rendering my final image. I have already used ctrl + alt +numpad0 to get the right camera position and angle. But when I hit F12, the render result does not match the camera view.. I have tried several things and my render results just keeps coming up as completely different. I don't think I have any key frames, and everything should be on the right layer? I just wish to render a still frame, no animation.

UPDATE: Render finished and the output is still completely different from my viewport and camera.

Even using viewport render does not work
Blender file is here

The "real" cause of the issue, is the subdivision modifier:

As the subdivision levels does not match in viewport and render, the cloth cash is not valid when rendering.
Turn the *render subdivision levels" to 1 and that will be ok.


How to add a delay (offset by time) to an objects transform properties that are being driven by another object Basically I have a Cube and a Sphere. I have copied the transform of the Cube using transform input to a vector math node (set to add to add an offset) and then to the Spheres transform output. Now when I move the Cube the Sphere moves at the exact same time. I want to add a time delay to it so that when I move the Cube, the sphere moves say 10 frames later and always has this delay in moving.
I've seen people doing something similar using instancer setup, but I dont want to create instances, I just want the sphere to move with a delay relative to that of the cube.
How can I set this up?

You can use Action. Here transforms from cube are transferred to sphere with a delay using Delay Action node.


Add object and shadow over a background using the compositor I am doing an animation with a camera to add 3D elements to it (don't really know what it is called)

As you can see in the picture above, i am trying to use nodes to assemble my shadow, object and background for the final render, but for my shadow, some of the plane is still visible... I tried using a "Dilate/Erate" node to mask the plane but it ends up also hiding the shadow.

Do you guys have any idea on how I can fix this? Thank you

In my opinion you are overcomplicating things.

Since you are using the new shadow catcher feature available in 2.78.5 you don't need to do much.

Set the plane that will receive the shadow, and set it to be a shadow catcher in Cycles Settings> Ray Visibility.

The rendered image will have the shadow and the rest of the plane will be transparent:

Then just overlay the rendered image onto your background using Alpha Over:


Simplified Vertices frame just had a quick question: I've seen artists show thier models with some sort of simplified wireframe where not all verticies are shown. This would be very helpful, needless to say, is there a way to initiate a mesh that way or viewpoint setting?

Assuming you mean the subsurface modifier,You can check Optimal Display .

Here is without (On the left) and with (In the Right)


How can I show the vertex positions in viewport? I want to show some Info in the viewport something like vertex indices

you can see select a vertex and press N to see vertex position but it's hard.

so I liked to write a script to show the vertex position

I tried to use opengl but text was blurry and I couldn't make what I want.
# import stand alone modules
import blf
import bpy

font_info = {
    "font_id": 0,
    "handler": None,
}

def init():
    """init function - runs once"""
    import os
    # Create a new font object, use external ttf file.
    font_path = bpy.path.abspath('//Zeyada.ttf')
    # Store the font indice - to use later.
    if os.path.exists(font_path):
        font_info["font_id"] = blf.load(font_path)
    else:
        # Default font.
        font_info["font_id"] = 0

    # set the font drawing routine to run every frame
    font_info["handler"] = bpy.types.SpaceView3D.draw_handler_add(
        draw_callback_px, (None, None), 'WINDOW', 'POST_VIEW')

def draw_callback_px(self, context):

    """Draw on the viewports"""
    # BLF drawing routine
    font_id = font_info["font_id"]
    #blf.position(font_id, pos.x, pos.y, pos.z)
    #blf.size(font_id, 100,100)
    #blf.draw(font_id, "Hello World")

    pos = bpy.context.object.location
    v3d = context.space_data
    rv3d = v3d.region_3d
    pos_text = location_3d_to_region_2d(region, rv3d, context._center)

    blf.position(font_id, pos_text[0], pos_text[1], 0)
    blf.size(font_id, 100,100)
    blf.draw(font_id, "Hello World")

if __name__ == '__main__':
    init()

Well, you are passing no context
(None, None)

but then using some context in draw_callback_px
that is None
you should use POST_PIXEL because it isn't 3d
bpy.types.SpaceView3D.draw_handler_add(draw_callback_px, (bpy.context, None), 'WINDOW', 'POST_PIXEL')

you forgot to import location_3d_to_region_2d libraries
import bpy
from bpy_extras.view3d_utils import location_3d_to_region_2d

Go to Window > Open System Console and you will see all the errors
so you can have something to debug what is happening there

convert coordinates from vertex to world-space
Multiply the world matrix by the object-space vector for world space coordinate:
import bpy

ob = bpy.data.objects['Cube']

v = ob.data.vertices[0].co
mat = ob.matrix_world

# Multiply matrix by vertex
loc = mat @ v

import blf
import bpy
from bpy_extras.view3d_utils import location_3d_to_region_2d

def draw_callback_px(context, dummy):
    ob = bpy.data.objects['Cube']

    v = ob.data.vertices[0].co
    mat = ob.matrix_world

    # Multiply matrix by vertex
    pos = mat @ v

    v3d = context.space_data
    rv3d = v3d.region_3d
    pos_text = location_3d_to_region_2d(context.region, rv3d, pos)

    blf.position(0, pos_text[0], pos_text[1], 0)
    blf.size(0, 1,1)
    blf.draw(0, str(pos))

bpy.types.SpaceView3D.draw_handler_add(draw_callback_px, (bpy.context, None), 'WINDOW', 'POST_PIXEL')

special thanks for @jfranmatheu and @batFINGER


How should i approach game asset design as a beginner? I have come back to blender after a long break, and now that 2.8 is here, I thought its a good time to get back into modelling. In the past i have worked on modelling simple objects and animation.

However i want to focus more on creating game assets. So... What is the best way to start? Im not sure if i should sculpt or model my assets, how many tris/vertices should i aim for. how can i optimize my object to be used in a game engine and what is the best way to texture my models? I was thinking of going for the texture painting approach. Do i need a third party software or is blender enough for everything?

Just need some ideas to get started. Any help would be appreciated.

That's quite a few questions and a bit more general than SE is meant for; but I'll tell you what I can.

Sculpting vs. box or face modeling really depends on the asset and what you're comfortable with.

Try and keep your vertices to a minimum necessary for the model, as every one is a tick against available resources on the client machine. You might also consider learning LOD, as you may end up using several different models (of leveled vertex count) for the in-game object depending on how far away from the camera it is.

Where texturing and optimization goes, it really depends on your game engine and isn't something I would worry about until you've profiled your game. Most of them do their own materials management and whatever you do in Blender you'll likely have to re-do there. They also accept a variety of formats, the most common being Filmbox and Collada; these notoriously differ in what they're capable of and how they do it, so bear it in mind.

And yes, Blender 2.8 is easily enough on its own; but you might get some use out of additional software. It's a little too vague to properly answer here.

I hope that helps. I'm still going to suggest that this question be closed, as it's a bit broad and relatively opinion-based.


How to increase the selection I have a cube and sub divided 25 and i have selected the center of the edge and i want to grow the selection on the top part only when i press ctrl+ it grow from center and spread top and bottom part i just want it grow on the top part. Is there any way to grow selection to top only

You can select all the bottom vertices and H hide them, then select your starting point and expand the selection as desired. When the selection is maden you should save it to a vertex group because when you unhide (alt H) the rest of the mesh, the previousely hidden vertices will be added to the current selection.


Blender Game for Mobile Device Is there a way I can import a game from the Blender Game engine to both an iPhone or Android, whether it's using a different program or not? If not possible, is there a way I can import everything in that specific Blender file over to Unity without changing any of the textures (all image textures, since they were baked), locations of the objects, and settings for the lamps/cameras/etc.? Help is greatly appreciated.
(Not a VR game)

There was a project called BlenderPlayer for Android, which let you run .blend files and even develop games on an Android device:

https://www.blendernation.com/2012/06/26/blenderplayer-for-android/

But this has been discontinued. I'm not aware of any other way to export Blender games as mobile apps.

You might also want to research this, but I'm sorry I don't know more detail about it https://www.youtube.com/watch?v=U8RzsJfh3Gc


Why is my material solid white? I was following the tutorial of Blender Guru on YouTube, to make an Earth in Blender. I was finished with the first part. But then somehow my clouds were deleted (the Material of Clouds doesn't exist anymore). And I started making a new material for the clouds. But the whole sphere is white, cloudds can't be seen like in the first time. What could be the reason?

The big sphere is the earth and it is fully white. If I turn the opacity of the Clouds down (eye symbol), the Earth can be seen. So the problem is with the clouds

The texture coordinates cannot control the shader mix factor.

An image is not a shader so it shouldn't be connected to a shader mix.

The mix shader shouldn't feed a color to the diffuse shader...

What you need is the Texture coordinates to control how the image texture is mapped. (Ideally you should unwrap the object for proper texture placement and use UV coordinates... but you can use Generated while you learn to unwrap)

The dark and bright areas of the image control how the transparent and diffuse shaders mix.

The color for the diffuse shader determines the color of the clouds.

I suggest you watch the so-called "tutorial" over a few times to familiarize with the steps taken... Nodes do require a certain order as the results will be different depending on how they are connected.


shape keys not working I'm trying to follow a tutorial on how to animate moths. I'm using shape keys and when I put a key frame in the shape keys and add some noise the moth does not move even though the shape key value is clearly changing.

Ian Hubert Lazy Tutorials if I'm not mistaken.
You need to add the shape key, put the value to 1 and modify the wing position. Keyframe/noise after that.
You don't see the wings moving because you didn't modify the wing position with the shape key at 1.0, by the looks of it.


Why can't I see the render layers in the Scene panel? I want to render an animation revealing only specific objects.
I have moved an object to the second layer.
All the tutorials I can find suggest using the Layers settings in the Scene panel.
Any idea why I can't see the Layers setting here?

The screenshot is showing the Render settings - the icon of a camera. The one next to it (looks like a couple of photos) is the Render Layers icon - click it and you should see the Layers panel.

The tutorial referenced in the question is using an older version of Blender (2.63) where the layout of the properties was different and the Render Layers were included in the Render settings.

Incidentally, the 'Scene' at the top of the panel refers to the current scene - it will change depending on the currently selected scene.


Is there a way to replace an object in my scene with a different one? Is there a way to replace one object position to another object position? and automatically match the scale? Any sort of addon or there is a way to do it? For example, I have a basic chair obj in the scene, however I downloaded a better chair, so I import the obj to the scene, is there a way I can just replace the downloaded chair obj to the basic obj with matching the scale and position?

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.


Question related to particle I am new to blender, doing an exercise of modeling a donut. When it comes to adding sprinkles, I was trying to use particles to do that. But when I apply the particle effect on my "icing" layer, the sprinkles were all hiding inside the icing instead of on top of that. Any idea what happened and how to fix that?

Check the source of the particle emissions near the top of the particle settings. Is it set to volume? Or perhaps the solidify modifier is after the particle modifier, so it adds sprinkles on the non-solidified icing, and then the icing solidifies over them.
PS: do not say “apply” generically, as it means something specific in blender.


Rigid Body | Copy from active I',m struggling with a change from blender 2.79 to 2.8. When you apply a rigid body to something and want to apply it to a lot of other objects, you you use dto (in blender 2.79) go over to your tools panel and hit "copy from active". But now, in blender 2.8, the tools panel no longer exists. Where is the new copy from active setting? The help I've gotten is "object>rigid body>copy from active" but I couldn't find it there.

On the top left of the screen, there is "View", "Select", "Add" and "Object". Select Object, then go down to "rigid body", them "copy from active".


Parenting and deformation I've been working on a human for 2 days, but every time I parent the skeleton to the model, the legs bend the wrong way. I rotate the pole as I saw in an instructional vid, getting the skeleton to move correctly. However, when I then paint weights, the model deforms extremely -- as in, when I make it even slightly green, it deforms while I'm painting.

I then tried fixing the leg's pole angles before parenting, but even then, the weight painting always causes extreme deformities. It only seems to paint correctly when the pole angle is 0, but in most cases, having it at 0 doesn't allow for the leg to move correctly.

I saw an instructional video on this, and the artist was easily able to change the pole angle without affecting the weight painting.

This sounds like you may have you have already 'Posed' your armature.

When an armature is already posed, parenting somthing to it will cause the child to take on the armatures pose. You need to only use 'edit mode' for choosing how the armature is set up. However this can be fixed:

Select the armature, go to pose mode, then Ax2 (or 1) just to select all bones. Then hit Alt+R, Alt+G, Alt+S, to clear all data on the bones.

When this is done your armature won't be where you wanted it, so go to edit mode to fix it back to the way you wanted.


HDR not rendering properly I'm doing just a basic setup using an environment node with an hdr file and a object but when I render its still in the panoramic view and it seems the background isn't rendering aswell what can be the issue.


How to drive a node group in Geo Nodes Blender 2.9.3a? I’m struggling with geometry nodes. I had a node group that generates a flower-like object based on parameters. Each copy of the node group generates a separate set of geometry which I can join to generate output. But I want to drive the node group from within another one; I want to create geometry, like a grid or a specified mesh, and have each vertex run the Parameterized Flower node group with a different set of params — some math on the vertex position for the group’s Translation param, an index number for the number of petals or one of the other input params, etc.
When I wire up my node group, the output is Geometry. But the Point Instance node in the outer group only accepts objects or collections (the yellow arrow in the screenshot), so I have to manually duplicate the node group and send its output to a Join Geometry node:

This defeats the purpose — I want the duplication to be generated. I’m looking for a way to only have a single copy of the Parameterized Flower group generate a separate, unique object at every vertex on the supplied geometry.
How do I get there from here?

It's not possible to instantiate geometry that's not tied to another object in the Point Instance node at the moment, but it is planned for a future version. It is a known limitation right now.
As a workaround you can use a collection with pre-generated objects and uncheck "Whole Collection". Tweak the node seed to randomize instances. Each element of the collection should have equal chances to be instantiated. I think weights similar to the particle system settings are planned.


Depth camera in Blender I would like to know if depth camera exist in blender, I mean camera that instead of returning  RGB value of each pixel return a value that is a distance to closed object?
If yes, link to some tutorials can be helpful.

What you are looking for seems to be a render pass for depth. I have found that the z render pass does not really work so try the mist pass.


What's wrong with this Collada file? I've generated this COLLADA file: http://ix.io/1kEL

When importing to Blender, it says "Couldn't find a material by UID." 3 times, and I don't understand why. It doesn't show any other errors, but fails to import the model.

When you say you generated this collada file, I am assuming your writing the script/program that generated it.

Within the library_visual_scenes you need a node surrounding the instance_geometry to define and position the object using the mesh.

<node id="Gem" name="Gem" type="NODE">
  <matrix sid="transform">0.92 -0.03 0.37 -0.38 0.14 0.95 -0.26 0.28 -0.34 0.29 0.89 0.64 0 0 0 1</matrix>
  <instance_geometry url="#Body__Mt_Body-mesh" name="Gem">
    <bind_material>
      <technique_common>
        <instance_material symbol="Mt_Body-material" target="#Mt_Body-material"/>
      </technique_common>
    </bind_material>
  </instance_geometry>
</node>


How to place texture across multiple edges? So I created this 3d model of a room in blender and everything went fine,
as I placed my initial texture which was the floor and it was perfect. and second texture was a wall texture which you can see below, and it was very much fine.

The texture was evenly placed as I wanted it to be.
but when I placed the same exact wall texture on the part of the mesh with the multiple edges... the texture appears distorted and messy all of a sudden and looks nothing like the first wall I just textured.

what is going on here ? How do I fix this. Im an intermediate blender user and not that much of a pro yet. I know someone might know the answer to this .

It look like you need to UV map your other face. This tells Blender what parts of the texture go where, so it can display it correctly.

I would press Num3 or CtrlNum3 to align the view to the face (because it's parallel to the Y-axis) and, in Edit mode with all those faces selected, press U > Project from View (Bounds).


Running a script via module vs script mode in the BGE When a script is run via Script mode through the Python Controller there is no need to have import bge in the script.
Why does running a script via Module mode require importing bge?

Documentation on the blender wiki of the differences between script and module modes.

Why does running a script via Module mode require importing bge?

Because the import statement is the proper way of writing Python code.

The auto-import within script mode is a dirty shortcut. It is still there for backward compatibility. But it is no good design.

Pro

You always need it to access the the BGE context anyway.
(In module mode you do not really need it as you can get access via function arguments.)
Bge is not a real Python module. It is a wrapper around the BGE native code.

Contra

It violates the Python convention to show where objects are coming from (defined by the code or imported from other modules)
It hides the fact that this module is imported at all. So a reader will never see an explicit assignment to bge.
The bge module should behave like regular Python modules, so it should be imported as any other Python module too.

I strongly suggest to add the import statement in script mode too and ignore the auto-import.

I hope it helps


How to export multiple animations for a game character? (specifically, Unity) Title says it all. I use Unity, so I really need a solution that works for that, and so do many others. Although, people also want to know how it's done for UE4, source, cry-engine etc, so answers that take them into account as well, would be better.

NOTE: for ue4
what i do is i put every animation in its own action and then set the anim player equal to whatever the keyframing is for that specific anim. i then export it as fbx using selected only and unchecking nla strips.


Specific type of Smoke Simulation I was trying out smoke simulation in cycles, though I couldn't get the specific type of Smoke I want. I want to create smoke for a drifting car (similar to burnout smoke but less). I searched the web but couldn't get one addressing this specific smoke simulation in cycles. I want to know what is needed for simulating that and how that function affects the smoke.

Smoke behavior is heavily impacted by the temperature difference between the smoke and the domain : if the smoke is hotter, it will go up (like smoke from a burning fire) ; if the smoke is colder, it will go down (like mist, or nitrogen).

In the case of a drifting car, the "smoke" is probably more dust than smoke. By the way, it should be the same temperature as the domain (or maybe a little bit colder, to simulate the gravity).

This setting can be found in "Domain/Smoke/Temp. Diff.". I suggest starting with a really low negative value, like -0.0001.


Why does blender need my CPU when I'm GPU rendering? When I'm rendering a scene in GPU mode, blender becomes very CPU & GPU intensive. This is most noticeable in cycles, luxrender tends to be less CPU intensive (in openCL mode). I would like a list of tasks the CPU performs when i'm in GPU mode.

It has to calculate and bake the frames when you are rendering... Try to think of the GPU doing the huge graphic tracing, and the CPU baking the elements in the scene, like keyframes for example... The CPU also is the one who adds the frames to the final file... Hope this helped! :)


Eevee fire and smoke issues I have run into a problem, fire and smoke won't work, I have volumetric on in the render tab and you can see my fluid settings in the video.

I have tried cycles and fiddled the hell out of the render settings in EEVEE, I have done a ton of stuff to get it to work. When I make a new file to test fire and smoke  by itself it works sometimes but when I test in my main project file with my rocket, it never shows in rendered or viewport.

I've re-baked so many times. If you want my project file i can attach that.

I am hoping someone will be able to provide a solution that works.

I switched it to replay and it worked! I am going to just do it in final mode as well because that works too. for some reason modular doesn't work.


how to separate uv maps I started with one mesh and then separated it later on.
When I now try to paint on one, I paint on both.

How can i separate the uv maps or do something else to prevent that?

thank you for all the tips and ideas.
the head and the body are 2 different objects.

I know the map isn't very clean. learning to do that these days.

Dont give the same material to both meshes, since you are painting on the same image it will affect the other one.


Weight paint isn't visible Going into weight paint mode, the weights aren't visible at all. There's not even the 0 weight blue. They're there and working though because I can pose the character, and I can paint because it changes her pose when I do, but I just can't see it at all. I'm sure it's just a simple button I need to press or something but I can't find the solution by searching so that's why I'm posting it here. You can see in my screenshots that I'm in weight paint mode, but no weights are visible, and she can be posed.

In the Viewport Overlays panel, make sure that the Weight Paint Opacity is somewhere above 0:


Why does my object remain gray in the 3D View after changing its 'Base Color'? I want to create a radioactive torus. First I think I need to change/set a color. I've created a torus and then (in material properties) a changed in Edit mode to green (see the snippet below).
I've also changed Emission to RGB green. Not only that the emission doesn't work, even the change color doesn't work: it's not green but still gray.
What's wrong with my Torus?

EDIT for solid mode

You have 2 materials in your material list, the one you've assigned is blank, you need to assign the other one (or simply delete the first one):


View a picture as IU in the viewport I want to display an image in the viewport. the image must always remain facing the In User (as a UI).
I thought to paste the image on a plane, but I know how to keep the plane facing the screen (the track "camera viewport" is possible?)

It seems that you want to see this image purely as reference when working on your scene. For that purpose, it would be enough to use a small area of your blender screen layout as UV/Image Editor. You can force the UV/Image Editor to always display your image by using the pin icon in the UV/Image editor.


How to set a starting point when the parenting of objects should start How can i set a starting point when a object start´s it parenting relation with an object .
Imagine a scenario where a hand takes a glass and lifts it of a table .
to make this in blender i want that the hand that goes down, not being locked to an empty in the glass, but when the hand touchess the glass and lifts the glass i want that in that moment the parent relation with the glass starts and the hand will then smoothly lift the class.
Is there a way to set when the parenting begins so that it begins at the point i my self decide .

Child of constraint

It behaves in a similar fashion to parent.  You can move the [child] or the target parent. By having a total of two constraints, one for each hand, you could move the glass from hand to hand.  Set keyframes to control start and
finish of control.  Of course employing paths will bring smooth motion.


How to remove personal data from a blend file How can I remove personal data from a .blend file?

I was asked to upload a .blend file in order to reproduce the issue. I removed all objects from the scene as far as possible and also removed all Python code as far as possible. This is good: it makes the file small, the sources for potential problems are eliminated and you can focus on the real problem.

However, when I look at the .blend file with Notepad or a Hex editor, it shows many paths on my system, which include my user name and other information. Note that I don't have any external references to files (like textures).

For this time, I can replace the personal data in a Hex editor, however, this is not a good approach in general, because

it only works as long as the file format does not use a checksum to verify the integrity of the file. (So I'm lucky it works for .blend files)
it only works as long as the file is not compressed, because changing a compressed file breaks the compression. (Strange enough that the .blend file is still the same even if I use compression)
if you accidentally delete a character (so that the file becomes smaller), the file becomes invalid
you need to know in advance what you're looking for (you need to know the search term) - and there might be many
it's a lot of work to do for something which doesn't bring additional benefit

As far as I know, there is no way to strip this information from a .blend file without editing the file itself as you have done and that has its own set of cons.

Option 1

Work at the root directory of your system. ie. C:/personal_folder/ or on a portable medium. You say you don't have any images or such attached so this shouldn't log anything private such as your username or any other personal paths provided you don't import anything and all you have is a model.

Option 2

Export to another format and reimport back into Blender. Exporting to a simple format such as .obj will only export mesh data (if all you have is a mesh) and same goes for importing it back. I did this with a file saved on my desktop and the only instance I could find with personal info was the location to the file. Use this with method 1 for optimal results.

As it addresses your other privacy concerns, being identified as to what OS you're on is fairly useless information and if you're sharing a file here, you might even be asked what os you are running so provided that no personal paths are included you should be fine.


How to convert frames between keyfames into keyframes? goal:

I would like to know, how to convert a certain number of frames between two keyframes into keyframes, for each segment made out of two adjacent keyframes.
In short, how to increase the keyframe resolution ?

for what purpose ? :

I want to animate a movement of a cube along a random path. It should not move smoothly but jump from one position to the next, just like quantuum leaps or the kind of movement you see when someone is moving through a dark room with a stroboskopic lamp flickering with 2 hz.
In order to achieve this effect, I want at first make a standard smooth movement of a cube for about 5 seconds and only four keyframes, than I want to increase the number of keyframes automatically by converting some frames into keyframes, after this I would have enough keyframes and would change the interpolation mode in the gradph editor to constant.

Make sure object is selected
Hit Spacebar
Type Bake Action
Set first and last frame and frame_step
Hit Ok
Enjoy


How do I get more control with Displace modifier mesh and subdivision surface? I want to create 3d wall panel with deformer

displacement modifier
smooth with subdivision modifier

but when i use it all my mesh is broken like porridge. I need a flat bottom and the upper part must be changed from modifier. I used displacement ]2

Control your displacement modifier with a vertex group.  More to follow.

You can search here at BSE or other video sites for the easy process of creating a vertex group.  Essentially creating a vertex group in the [vertex group panel], selecting vertices and assigning weights by pressing the button in the panel.

In the image above a vertex group is created named [DisplaceGroup] and used as the vertex group name in the Displace modifier.  The vertex group is shown in [Edit Mode].  The yellow arrows show the relevant settings.

Note how the red area in the Edit Mode has weights of 1.0 and is affected by the Displace Modifier. The blue area has weights of 0.0 and is not affected by the displace modifier.  The use of the vertex group name makes this all function correctly.

This is guide for you to get quick results.  This is not a tutorial on vertex groups which are better demonstrated previously and elsewhere and can be found with a quick search.


Problems using bone symmetry in Blender 2.80 I did what was taught in this tutorial:

https://www.youtube.com/watch?v=ovzG9T5KKso

I selected the bones on the side that I made, right-clicked and selected the symmetrize option:

But it did not work:

I tried to do the bones on both sides at once, but I didn't know how to do that in this version of blender.

If I'm not mistaken in previous versions, it was just extruding using shift/control (I'm not sure which of the keys exactly) + E.

To be able to symmetrize, the bones must have suffixes like _R or .R or _L or .L.


How can I get the "Render" and "Dimensions" panel I want to export a video I've edited into an MP4 file. I've watched tutorials on YouTube about how to do it and in all the videos I've seen, they've all had panels for "Render" and "Dimensions" whereas, these panels are the only ones I have:

How do I gain access to the render and dimensions panel?

Switch from game engine to one of the render engines, blender internal or cycles.


Make objects reflect from separate view layer 2.8 My last post of this was marked as a duplicate for glass shaders. I want to make explicitly clear, I am NOT asking for glass shaders.
I'm doing a bit of archviz for a buddy's bathroom remodel, and I want the windows and reflective surfaces to show a background without it darkening the scene. In 2.79 you could set the object ray visibility, but that seems to have been removed. (As shown in this post; Plane to only reflect object?) I know I could use view layers, but next to a window is a glass plane that reflects the environment, and I don't know how I'd composite that in. I've also added in an external ground plane to get some ground color bounces. By the end result, I want the brightness afforded by the background plane NOT being there, but have it appear in the final image and reflections.
Note the reflection in the glass

For a simple demonstration, I made a plane and some glossy spheres with an HDRI, I need the light to pass through the plane and reflect off the lower sphere underneath it, without it also creating a shadow from the plane. In the scene I have the light should be passing through the plane without the plane casting a shadow and darkening the scene.

Is it possible you're on Eevee (doesn't look like it from the noise),  but that hasn't been removed:

For much more control I would suggest the Input -> Light Path node


View Colors outside of render http://www.pasteall.org/blend/36447

Is there a way to make me see the look of the mesh outside of rendering like in blender render? Id be cool with vertex paint or UV.

Side note: If I want to view most all my effects while editing, Which has more available to view BR or CR?

Unfortunately, it's not possible to realize shading effects from Cycles BSDF node trees in the viewport via OpenGL. You must use the Viewport render mode or do a full render to the frame buffer to realize the shader effects that you've set up.

At this point, you're pretty much limited to image textures, ambient occlusion, DOF, and shadeless mode for viewport view when not in render mode. I suppose you could technically bake your cycles shaders to a texture image, and then apply it to the mesh for viewing in the viewport, but that seems counterproductive.


Is it possible to render frames out of order? I have a looped animation. On the first and last frames, there is nothing but a plain backdrop, and the object appears sometime during the middle of the animation. I'm rendering to an image sequence, then compiling to .gif with the help of ScreenToGif.
The problem is that the .gif thumbnail shows the first frame, which is the blank backdrop. This is especially problematic because I have multiple works in a series, and all of their thumbnails are the same blank backdrop. The animations are all 168 frames long. My workaround is to manually import frames 60-168 into ScreenToGif, then to import frames 1-59. However, this is fairly inconvenient. I've also tried shifting the keyframes to achieve the same effect but, again, it's a substantial amount of unnecessary work.
Is there a way to render frames out-of-order and effectively renumber or remap the frames? For example, I'd like to save frames 60-168 as frame[0001-0108].png, and frames 1-59 as frame[0109-0168].png.
Is this possible?

I would do this via scripting.  Here I modified an existing script that would do your remapping of frame# into file index#.  You would adjust firstBreak to 60 and lastFrame to 168.
import bpy

filepathFmt="//render/frame {0:04d}.png"

firstBreak=8
lastFrame=11

###
### for list of shape types, N loops, create a set of objects, render and save, and clean up:
###
fp=""
outFileIdx=1

### render from firstBreak to lastFrame:
for frameIdx in range(firstBreak, lastFrame+1, 1):

    bpy.context.scene.frame_set(frame=frameIdx)
    print("frame=" + str(frameIdx))
    # format filename string using different index
    fp = filepathFmt.format( outFileIdx )
    print(outFileIdx)
    print( fp )
    bpy.context.scene.render.filepath = fp
    bpy.ops.render.render( write_still=True )
    outFileIdx+=1

print("remap")

### render from frame 1 to firstBreak-1:
for frameIdx in range(1, firstBreak, 1):

    bpy.context.scene.frame_set(frame=frameIdx)
    print("frame=" + str(frameIdx))

    ### render and save:
    # format filename string using different index
    fp = filepathFmt.format( outFileIdx )
    print(outFileIdx)
    print( fp )
    bpy.context.scene.render.filepath = fp
    bpy.ops.render.render( write_still=True )
    outFileIdx+=1
```


View object with used texture I'm working on a project with a lot of objects, I want to make the file a lot smaller, because its overloading my hardware.

I want to see which objects are using the selected texture. I'm in the shader editor, and I don't know how to look in my scene, and I have made a mess of the scene and materials.

You can assign a Viewport color to your material.
That way, all objects with the same material will have one distinct color in Solid view.


Solidify Modifier won´t create a solid surface I´m quite new to Blender and wanted to try out 3D printing.
Now I´ve already created a form and wanted to add wall thickness. I have already diagnosed it with Netfabb and apart from the fact that it´s not closed it is alright.
My problem now is that I have applied the "Solidify" modifier and it only adds a an unpleasant rim instead of giving it a water tight surface. What am I doing wrong?

Uncheck the "Only Rim" checkbox in the Solidify modifier settings and you will get the expected result.


Get list of global IDs with the material name with Python I am trying to generate a list of global lDs and the material that is attached.

To get the global IDs I have tried:

objects_with_ID = [ob for ob in bpy.context.scene.objects if ob.IFC Object.GlobalId[1]]

I managed to get it working:

import bpy
import csv
import os

outputFile = 'C:/Temp/0_IFCGuid_IFCMaterial.csv'
f = open(outputFile,'w')

for o in bpy.context.scene.objects:
    if o.type=='MESH':
        material = o.active_material.name
        global_id_index = o.BIMObjectProperties.attributes.find('GlobalId')
        guid = o.BIMObjectProperties.attributes[global_id_index].string_value
        print(guid)
        print(material)
        f.writelines(guid)
        f.writelines('\n')
        f.writelines(material)
        f.writelines('\n')
f.close()


How to get the active vertex within a Handler? I need to know the current active vertex from within a Handler, so i do this:

import bpy, bmesh
from bpy.app.handlers import persistent

def find_active_vertex(bm):
    elem = next(reversed(bm.select_history), None)
    if isinstance(elem, bmesh.types.BMVert):
        return elem
    return None

@persistent
def edit_object_change_handler(scene):

    context = bpy.context
    obj=context.edit_object
    if obj and obj.type=="MESH" and context.mode=="EDIT_MESH":
        bm = bmesh.from_edit_mesh(obj.data)
        avi = find_active_vertex(bm)
        if avi:
            # ... more done here ...
            pass

def register():
    bpy.app.handlers.scene_update_post.append(edit_object_change_handler)

However this approach does not work. The following line seems to create a very unwanted misbehavior of Blender:

elem = next(reversed(bm.select_history), None)

As soon as i add this statement the weight editor in the "n" panel of the 3D View no longer accepts weight values as input.

So my question is: Is there an alternative to find the active Vertex within a Handler that does not affect the behavior of the Vertex Weights panel within the "n" properties sidebar of the 3D View ?

Try reusing the bmesh instance, here I've used a global dic.  Also I've used history.active

import bpy, bmesh
from bpy.app.handlers import persistent

def find_active_vertex(bm):

    elem = bm.select_history.active
    if elem is not None and  isinstance(elem, bmesh.types.BMVert):
        print("BVert", elem, elem.index)
        return elem
    return None

dic = {}
@persistent
def edit_object_change_handler(scene):

    obj = scene.objects.active
    if obj is None:
        return None

    if obj.mode == 'EDIT' and obj.type == 'MESH':
        bm = dic.setdefault(obj.name, bmesh.from_edit_mesh(obj.data))
        find_active_vertex(bm)
        return None

    dic.clear()
    return None

def register():
    bpy.app.handlers.scene_update_post.append(edit_object_change_handler)

register()

scene_update handlers are called around 200 times per second, (Sample file here https://developer.blender.org/T46329 )  Using the data to load bmesh that many times probably affected the vertex weight panel.  I'd consider using a  modal timer operator instead.


Blender for dental treatment planning? I've heard a lot about Blender and want to evaluate it as a 3D CAD software for dental treatment planning. Example use cases are:

Given a 3D scanned (.STL) dental arch model, how easy is to separate each tooth
After step #1 (lets' call it teeth segmenting), when an individual tooth is translated, rotated, (not scaled) arbitrarily, how easy is to fill the 'holes' that are left behind. (Actually the gap between tooth and the gum)
Is it possible to generate a 3D matrix (or any other transformation representation) of the teeth's new position/orientation ?
Can 3D data exported from Blender be integrated in any type of web app (to be shown as animation of 'before' and 'after'?

The objective is to use Blender in virtual treatment planning as used by large clear aligner companies (they use proprietary software but I guess all that can be done in modern 3D softwares)

I don't know how well this question can be answered, but I'll give it a shot.

1. I believe the difficulty of separating out individual teeth depends on:

The quality of your scan data
Your modeling skills
Your knowledge of anatomy
Any additional data you may have to reference (x-rays?)

In the 3D scan there is no differentiation between tooth and bone, so you have to recreate it. Taking x-ray images to accompany your 3D scan data may help significantly by letting you see where one ends and the other begins - and ideally you will want at least a front and a side view.

2. This is an extension of the idea in Part 1. Filling holes is easy, as far as modeling goes. The accuracy however, will depend on the data you have available and your abilities.

3. I'm not clear on what you mean by "3D matrix". 3D coordinate data is always represented as a matrix, but I don't think that's what you mean here. In any case there are many ways to present your 3D models in Blender, including using animation. If you describe what you mean in more detail I can probably address this point better.

4. You can use Blend4Web to embed your Blender scenes in a web page. Since it does not require any browser plug-ins anyone can view it, even on mobile devices. The details of how to do this are beyond the scope of this question, but you can learn about it on the Blend4Web site.

Here is a related dental modeling question worth looking at.

The link in Abel's comment looks promising as well, although I'm not familiar with it.

Good luck and please let us know how it works out.


How to create a fake fire/flame? I'm attempting to fake a couple flames on some candles. Since my scene is already pretty intensive, I think that doing a fire simulation would just add more to render times. Trying to use a transparent flame texture with some emission shaders but cant seem to get too good of a result. It ends up either looking too bright or not transparent enough. Here is in eevee (hdri was having issues so this is with just some sun lamps)

I tried adding some glow in the compositor but its not satisfactory. Is there any other way to fake fire? This is just a transparent image on a plane.

For a shader only solution, one way is a simple material such as the following:

Click to enlarge
Blackbody Node is used for color.
See kelvin color temperature for some examples of values to start with. You can adjust these values up and down until you get something you like.
The layer weight node is used for a mixing factor between the two blackbody nodes creating a result like below:

An approach like this should keep resources low and be fairly manageable. Note that also, the flame object is a quad-sphere modeled to a flame and not a flat plane.


Visualizing 3D voxel data in Blender 2.8 right now I'm trying to visualize my scientific 3D data in Blender 2.8. So blenders built in textures or smoke simulations do not lead to the goal.

I've read that older releases of Blender do support voxel data with the internal blender render engine. But I didn't find this for cycles or eevee.

Is there a way to plot external 3D data for volumetric rendering or is it planned to be implemented in soon releases?

Greetings
Janek

As of Blender 2.83 OpenVDB is now supported as a volume object.


How do I turn a scene into a 3-color...logo or cartoon looking image? I want to turn a scene into a more graphic-design looking image, something that can be screen printed onto a T-shirt which means few colors. Is there a conventional way to do that which makes the rendered models look crisp and very monotone, but still take into account a little bit of shading?

More like these examples but with a crisp distinction between colors instead of a smooth gradient https://www.google.com/search?biw=1600&bih=757&tbm=isch&sa=1&ei=04mGXZK4KsGOtQWH9ab4DA&q=shaded+logos&oq=shaded+logos&gs_l=img.3..0.17866.18966..19014...0.0..1.222.1149.9j1j1......0....1..gws-wiz-img.......0i67j0i8i30j0i24.px0-LbngAZk&ved=0ahUKEwjS7cmk4uLkAhVBR60KHYe6Cc8Q4dUDCAc&uact=5

I am sure there is a way to set that up, but I am not sure what kind of lighting and materials would accomplish this.

Oh...you want to do that to a scene? Whoops. Well this is how it would work. You would still use nodes, but instead of using the Material nodes, use the Compositing Nodes (the tab with the two pictures at the bottom of the Node Editor.)

This is what the scene would normally look like.

Here's a few different effects you could try out.

A Persona-esque effect:

A Noir (or Gameboy) effect:

Or just a totally simplified color scheme:

Again:
Make sure your film is transparent. Open the tab with a photo camera on it in Properties, scroll down to "Film," and check the transparency box.

Feel free to mess around with the ColorRamps until you get a good result. Any change makes a big difference! Just remember to keep it on "Constant."


Color vertex by deformation value in an animation Hi I have been trying to develop code which shows the amount of deformation on a mesh's edges by coloring the vertices a value which depends on the average change in edge length for the connected vertices. The code currently works but is very slow. Does anyone have a good idea on a way to speed it up?
Here is the code I have so far
# Get a BMesh representation
def color_vertex_bm(me): # me is a mesh from me = bpy.context.active_object.data

    bm = bmesh.new()   # create an empty BMesh
    bm.from_mesh(me)   # fill it in from a Mesh
    bm.faces.ensure_lookup_table()

    Ege = get_edges(me)
    sE = (Ege-Ege_0)/Ege_0    # *** Ege_0 is a global variable that stores all initial edge lengths
    # print(sE)

    # Get first color layer (create if needed)
    if not bm.loops.layers.color:
        bm.loops.layers.color.new('Col')
    layer = bm.loops.layers.color[0]

    for face in bm.faces:

        for loop in face.loops:
            # get vert coord
            current_vert_coord = loop.vert.co
            v = loop.vert
            # get all the edges that belong to this vertex
            Eges = [e.index for e in bm.edges if v in e.verts]
            avg =(np.average(sE[Eges]))
            # custom color map lookup for the average value
            rgba = colormap_jet(avg)
            # assign rgba to the loop
            loop[layer] = rgba

    # Finish up, write the bmesh back to the mesh
    bm.to_mesh(me)
    bm.free()  # free and prevent further access

def get_edges(me):

    Ege_local = np.array([])
    bm = bmesh.new()   # create an empty BMesh
    bm.from_mesh(me)   # fill it in from a Mesh
    bm.faces.ensure_lookup_table()

    #get all edge lengths
    for e in bm.edges:
        ege = e.calc_length()
        Ege_local = np.append(Ege_local, ege)

    # Finish up, write the bmesh back to the mesh
    bm.free()  # free and prevent further access

    return Ege_local

Using numpy and foreach_get
In as much as I love using bmesh, for speed it is quicker to use numpy in conjunction with partners in crime foreach_get and foreach_set in object mode from the mesh object.
My numpy knowledge is rudimentary, so there is a chance that this can be optimised further.

Simple Test Run, "Copy" on right of cube on left. Black for no link edge change, red else
import bpy
import numpy as np

class BATVertColors:
    def color_by_verts(self, colors):
        cols = colors[self.vert_index_table]
        self.vcolor_layer.foreach_set(
                "color",
                cols.ravel()
                )
    def __init__(self, me, vcollayer):

        nloops = len(me.loops)
        vert_index_table = np.zeros(nloops, dtype=np.int32)
        me.loops.foreach_get(
                "vertex_index",
                vert_index_table
                )
        self.vcolor_layer = vcollayer
        self.vert_index_table = vert_index_table

class BATMesh:
    def vert_link_edges(self, index):
        return np.logical_or(*np.isin(self.edges, index).T)
    def __init__(self, me, vcol="Col"):
        nverts = len(me.vertices)
        nedges = len(me.edges)
        #nloops = len(me.loops)

        vcoords = np.empty(3 * nverts)
        me.vertices.foreach_get("co", vcoords)
        edges = np.zeros(2 * nedges, dtype=np.int32)
        me.edges.foreach_get("vertices", edges)

        vcoords3d = vcoords.reshape((-1, 3))
        a, b = edges.reshape((-1, 2)).T

        edge_lengths = np.linalg.norm(
                vcoords3d[a] - vcoords3d[b],
                axis=1,
                )
        self.edges = edges.reshape((-1, 2))
        self.vcoords3d = vcoords3d
        self.edge_lengths = edge_lengths

        # colors

        col = me.vertex_colors.get(vcol)
        self.vcol_layer = BATVertColors(me, col.data) if col else None

# give it a test run

context = bpy.context
scene = context.scene

ob = bpy.context.object
me = ob.data

mesh0 = BATMesh(me)

# warped object copy
copy = scene.objects.get("Copy")
assert(copy) # <---
mesh1 = BATMesh(copy.data)
nverts = len(copy.data.vertices)
delta_edge_length = (mesh1.edge_lengths - mesh0.edge_lengths) / mesh0.edge_lengths
rgbas = np.array([[0, 0, 0, 1]] * nverts)
# could be a more numpy-centric way to do please share
for i in range(nverts):
    link_edges = mesh0.vert_link_edges(i)
    m = np.mean(delta_edge_length[link_edges])
    if m > 0:
        rgbas[i] = (1, 0, 0, 1)

mesh1.vcol_layer.color_by_verts(rgbas)

Some notes.
Have reduced  to no bmesh and "for x in y"  looping over the vertices once. Looping is generally the rate determining step.  Using methods as displayed above is going to be a lot quicker.
Some minor tweaks to speed up question code.
Since it's there, and it works, it's worth making a few comments re possible ways to optimize too
The default cube has 8 verts and 24 loops. In question code each vert is being processed for each connected face (loop), or 3 times.  A default dictionary could be used here, or another way to keep tabs not to process a vert more than once. (Example of a vert index to loop index LUT)
>>> from collections import default_dict

>>> lut = defaultdict(list)
>>> for f in bm.faces:
...     for l in f.loops:
...         lut[l.vert.index].append(l.index)
...
>>> pprint.pprint(lut)
defaultdict(<class 'list'>,
            {0: [0, 15, 19],
             1: [1, 14, 22],
             2: [3, 4, 16],
             3: [2, 5, 21],
             4: [11, 12, 18],
             5: [10, 13, 23],
             6: [7, 8, 17],
             7: [6, 9, 20]})

In this case tho would loop verts, and set color for each then when looping faceloops
loop[layer] = colors[loop.vert.index]

Bmesh has worked out all the links for us
This is going to be very expensive (re above) each time looping over all edges to find a vert's linked edges,
# get all the edges that belong to this vertex
Eges = [e.index for e in bm.edges if v in e.verts]

and can be replaced with v.link_edges eg for cube
>>> for v in bm.verts:
...     [e.index for e in v.link_edges]
...
[0, 1, 10]
[1, 2, 11]
[0, 3, 4]
[2, 3, 5]
[7, 9, 10]
[8, 9, 11]
[4, 6, 7]
[5, 6, 8]


Rigify and WGT bones So this guide https://docs.unity3d.com/Manual/BlenderAndRigify.html
says to delete the WGT bones.

I'm guessing these are bones that were used to create the control polys for the rig... so why are these left laying around overcrowding my view tree instead of being deleted when the rig is done being generated?

Is there a way to easily remove the (100 some odd?) WGT bones all at once?

Select them by name in Object Mode Menu:Select / Select pattern,
Type WGT*
Delete the selected objects with X.
Open a text region and paste this script and press the run script button:

import bpy

scene = bpy.context.scene
for o in bpy.data.objects:
    print(o.name)
    if o.name.startswith('WGT'):
        o.select = True
        scene.objects.unlink(o)


TV titles: Split a list into text from a CSV document using Animation Nodes I have a Spreadsheet list that is sorted into columns of attributes (Story name, Journalist Name, Talent name, Talent Occupation etc.). This is then sorted into order of appearance by its row, so that upon a frame change I will generate a new graphic item from the columns.

So far I can reduce the list down to seperate items per row, but I can't figure how to split the items on to their own lines? So that they appear like this:

Also I want to control the font size per line, can this be done to the single text object?

Finally I want to allocate position information based on the column the item comes from. For example the column 1 and 2 appear in the bottom left but item 6 appeared on the top left. I considered using Empty objects as adjustable hooks but I don't know how to integrate them based on column info?

Double Line

To make the text be formatted on two lines, you can replace the , with a line break special character as follows:

Different Sized lines

Blender doesn't allow various sizes for the same text object, what you need to do is separate each of the lines as follows:

Column Location

First, I would make a classifier loop that classify each column, For instance, I classified this text into names and titles.

Then we join names and titles using a line break (Or possibly make them different object if you want them to have different sizes), and then output the text to a text object as follows:


Can we integrate Sensors to blender I wanted to Build a physical Game in sense of having an external sensor like heart rate or light sensor sending data to Blender engine and use these data to move object or do something within the game so is there a way Blender can handle external sensors

Thanks in advance

While i havent seen it doen inside the game engine, it has been done inside blender. there is a great stack exchange answer here How to move an Arduino's servo motors using Blender?

To use this in the game engine you would need to modify the python code to use the game engine modules, and connect it as a python script controller in the game panel.


How to get an empty tracked by a camera to move smoothly between keyframes I have constrained a camera to track to an empty, and I've constrained the empty to limit its distance from the camera to outside 5 m and inside 10 m. I have parented the camera with the track-to constraint to another camera with a follow-path constraint.

The parent camera was used to set up the path by flying it to find good shots and placing empties there, creating a single vertex at the first empty, extruding to each succeeding empty, converting the line to a curve, changing spline type to bezier, smoothing and refining. Then the parent camera was constrained to the path and the path was animated. The timeline was scrubbed to move the camera to each empty on the path, the camera constrained to track was made the active camera, and from camera view the tracked empty was moved to align the view with the desired shot. The location of the tracked empty was then keyframed.

This workflow works nicely for me except for a couple of glitches. These could be solved by creating a path through the locations where the tracked empty was keyframed and using that to direct the rotation of the camera, but that involves a lot of extra steps,and a lot of these shots need to be set up. I hoped that somehow refining the constraints would yield a better solution, but I'm not very familiar with constraints and don't know if that is possible.

First, because the empty can't come closer than 5 m from the camera, it gets dragged by it in a way that occasionally causes problems - it doesn't move on a straight line between keyframe points. It chooses a path that keeps it 5 m from the camera, even though it is allowed to be up to 10 m from the camera, and if it combined those rules it could move in a straight line between points. Second, I mistakenly set up a situation that would oblige the empty to come too close to the camera, and even though I corrected that by replacing the keyframes, the empty still veers wildly between the keyframe points involved, like it remembers the path that was previously calculated to satisfy the limit distance constraint. In fact I can't make it move further than 5 m from the camera, it acts as though it is supposed to stay exactly 5 m away.

When there is no Limit Distance constraints on the tracking empty, lining up shots by using it breaks after a short time. The shots are lined up while in camera view. Moving the empty from this perspective causes it to converge on the camera after a short time and then it is uncontrollable.

But getting the camera to behave properly is very slow and difficult any other way. If it looks at an empty on a path, the movement of the empty on the path has to be offset repeatedly to get the desired effect. It's very hard to get that right, especially if the path of the camera and the path between pause points of the empty is complex. If the rotation of the camera is keyframed, it's very hard to get it to focus on something for any length of time as it moves. I have done the kind of architectural flythrough video I'm working on now before. I've spent a day and a half trying to set up an empty on a path to behave as desired only to accept a mediocre result because I was out of time.

Here is an illustration of the problem behaviour at the moment. Note that the system works very well until this end bit.

Here is the console window provided by a reader of the question.

Is there a way to tweak these constraints to eliminate these problems?

I am suggesting you

Backup and Archive your work
remove the cyclic dependency which means removing the limit distance constraints.  This information is provided in the console window.

Alternative 01

place the empty on newly created path.  Thus the camera is on path1 and the empty is on path2.
remove the limit distance constraints, repeated for emphasis
Please know that that changing a path changes its distance and thus keyframes on a path start moving.  If you can possibly  lay out the whole path for the empty at once or nearly so please try and be aware of the situation.  You have many follow path constraints with ebbing flowing [influence] as scary as this seems.  Sometimes the separation allows less work.

Alternative 02

This may or may not be an advanced technique alternative to the path constraint.  There is a [copy location] constraint with [influence] which may allow a object to reside a certain point at a certain keyframe with certainty once the time and effort of setting up the arrangement of objects and keyframes is made.


How to get crisp lines after a render? Apologies for being a newbee. I watched many tutorials but I cannot seem to find an answer on how to render even the default cube with crisp outer lines. I save the object as a .png with transparent background in order to import it into Adobe illustrator but the outer lines are aliased, not crisp. what am I missing?

Any input would be greatly appreciated.

I have noticed that blender will render with some slight effects with Eevee.
If you use Eevee. Try changing under the render tab go down to film and change filter size to a lower number.
This might bring sharpness up to where you need it.

Let me know if that helps?
Cycles too has glossy which causes renders to blur slightly.
This might be the antialising your speaking of!

Just for kicks. Try rendering with cycles.
Or. Try opening older blender 2.79 and render with cycles.
2.79 has blender render might be what you need. A more simple render.


How to clear everything on screen? ok i know im dumb but i do need help! i dont know how to get rid of those black things on there ( i just downloaded blender so Q-Q)
HELP!

The thing with triangular sides is camera. Your final render will be looking through that. You can view it by pressing Numpad 0. You should not delete it, because blender might not work as you expect when rendering.

The circular thing is a lamp. All the shadows will be calculated using the orientation and location of the lamp. In the nutshell - you need a lamp to prevent your scene from being completely dark.

You need these things to render your final image, but if you really want to delete these just press A one or two times to activate them and then press Del or X key to delete them.


Linux Sheep It Client Doesn't Recognize Nvidia GPU I know this is slightly larger scope than just Blender, but I know other Blender users have had this same problem. I've started using Sheep It and I really enjoy it.  When I try getting points rendering on my own computer (and I have to use the .jar file because I use Linux Mint) the terminal outputs:

GPU::generate failed to load CUDA lib (path: cuda)

It still allows me to use my CPU but I could render at least twice as fast if it would recognize my GPU. I've done a little research on this and the only other guy who had this problem I could find was here: https://plus.google.com/112229882551127022642/posts/KL4QtHWHx92

And after some confusing discussion that I don't understand, Sheep It said:

  The common thing between the not working system is the driver version.
  If you are on 331 it does work, if you are on 340 it doesn't. I have
  no idea why but it least I know what to look for.

So, my Driver Manager looks like this:

What are the implications of switching between drivers? If I wanted to, how could I also install nvidia-331? What does all the confusing stuff on that Google+ post mean and would that fix my problem? Most importantly, is there any way to get my current machine, without changing my drivers, to render for Sheep It on my GPU?

UPDATE:
I tried all the Drivers in the Driver Manager and none of them fixed the problem. Also, running the jar command as root does not fix the problem either.

Thanks.

The easy(ish) answer is that Cuda isn't actually installed by default on every platform.  Blender actually compiles in CUDA libs statically AFIK, but in other programs you will need to install the CUDA toolkit.

https://community.linuxmint.com/software/view/nvidia-cuda-toolkit

Additionally, you can actually install the version from the NVidia site, but it's a bit more compilcated:

https://www.reddit.com/r/deepdream/comments/3cd1yf/howto_install_on_ubuntulinux_mint_including_cuda/


How to export an edited clip into a video file in the VSE? I am in the video sequence editor, cut out fragments, combined the remaining into one whole new clip and do not know how to procede from here on in order to obtain a video file (h264, mpeg4).

I tried to click the animation button and all I got was a some pictures I already had cut out.

I will try to answer your question. I will be my first answer so bare with me ;-) See the attached image. Specify the render preset (such as the HDTV 720p or some other). Specify frames per second. Enable Sequencer in the Post Processing tab (this will switch render mode from 3D rendering to video sequence rendering). And in the output tab choose H.264 (it will be MPG4 by default as I recall). Also specify an output path and filename. And hit Animation.


Generate mesh at run time Is it possible to generate mesh at runtime in blender game engine? That is, is it possible for blender to generate meshes using python code when the game runs?

I really would like to know if this is possible, as my final year project requires use of this.

The comment by Chebhou is almost correct... One thing that may not be clear, is that you can import bpy into bge scripts (many sources say this is not something you should do, but I have experienced no harm in using it during development, however, you can only use it in Blender - it will not work when you build/compile your final game). Thusly you can use the examples on the wiki page they linked to get started in generating meshes procedurally for your game, within Blender during development.

Unfortunately, there appears to be no way currently (as of version 2.78a) to construct a mesh from scratch during runtime of your game.

A couple of potentially useful rabbit holes, to show there may still be hope (will update this answer as/when I discover more):

Generate, or "hack" a .blend file with your mesh data, and feed it to the dynamic loading system. This is all open source, so the specification should be readily available (or possible to glean from the source code).
Alternative builds of Blender, which rumor suggests some are available with this functionality out of the box
Modify Blender yourself...again: open source!
Here is a nice thread about using BGL in BGE: https://blenderartists.org/forum/showthread.php?301350-BGL-in-Blender-Game-Engine this appears to be the most promising approach and here is thoe documentation for BGL: https://docs.blender.org/api/blender_python_api_2_60_4/bgl.html


How to sort 3D models, like adding tags to them, and select 3D by tags? I'm working on a lot of models of a power plant.

I made a cut to see the inside of the power plant and I have to manually fill the area of the cut with each of the models.

I already work on group of assets (generator, turbine, etc.) but I want to do it faster.

This is my current workflow:

Select and hide each models I've done
I select a model/a group to fill
Go to #1

But it is a waste of time selecting each time the model is done. Is it possible to make it faster to select the models I've already done?

Typically I would like to add a tag to a finished model, like say "Work done"
So after I can select all "Work done" models and hide them

Or is there another way to differentiate the objects so I can easily select them?

Thanks to Mr Zak, Ray Mairlot, and Duarte Farrajota Ramos
Grouping elements is a way to work, and using Blender Groups as Layers is definitively a good workaround of tags to organize the work

Ctrl+G to create group
Shift+G to select similar groups
Ctrl+Shift+G to add selection to selected object group
Ctrl+Alt+G to remove selected object from all groups he is in - How to remove object from group?

If you add an object to a group you can select by that group via Shift+G menu or view groups in the Outliner. – Mr Zak
You group objects by selecting them and pressing Ctrl+G. It doesn't create any extra hierarchy. – Ray Mairlot

Thanks to you two, I didn't know about group and I now understand better what a group is and how to use it. Also I found here ; https://blenderartists.org/forum/showthread.php?181779-SOLVED-Add-several-objects-to-existing-group that using Shift+Ctrl+G is the way to add object to an existing group – LeDucSAS

Using Blender Groups as Layers is a good way to organize a scene. Each object can belong to any number of groups at the same time, essentially working like 'tags'. Set the outliner permanently to Groups view so you can toggle visibility and selectability easily. – Duarte Farrajota Ramos


Is there a move topological brush in Blender? I can't find a way to change falloff to use the distance on the topology rather than the absolute distance.
It is very difficult to sculpt things like fingers. When I grab one finger it automatically moves the others.
zBrush does have this brush, but I'd really prefer to stay in blender.

Is there some option/addon/workaround to this?

There is not counter part to topological falloff with the sculpt tools AFAIK. There is a topological option in the move, scale, rotate tools when you enable Proportional Editing called Connected Only.

If you need to use the sculpt tools, use masking or hide parts of the mesh.


Curve from selected vertices/edges using low level api I want to convert selected vertices/edges into curves. I can convert them using bpy.ops functions. But is there any alternative using lower level api preferable using bmesh.
I can get all spline points to proper position but not in proper order so I get this mesh(middle) not the expected curve(left).

Here is the code.
import bpy
import bmesh

def create_curve(coords_list):
    # make a new curve
    crv = bpy.data.curves.new('crv', 'CURVE')
    crv.dimensions = '3D'

    # make a new spline in that curve
    spline = crv.splines.new(type='POLY')

    # a spline point for each point
    spline.points.add(len(coords_list)-1) # theres already one point by default

    # assign the point coordinates to the spline points
    for p, new_co in zip(spline.points, coords_list):
        x,y,z = new_co
        p.co = (x,y,z,1)

    # make a new object with the curve
    obj = bpy.data.objects.new('object_name', crv)
    bpy.context.scene.collection.objects.link(obj)

def main(context):

    obj = context.active_object
    if obj.mode == 'EDIT':
        # this works only in edit mode,
        bm = bmesh.from_edit_mesh(obj.data)
        selected_verts = list(filter(lambda v: v.select, bm.verts))
        pos = list(map(lambda v: v.co,selected_verts))

        create_curve(pos)

class SimpleOperator(bpy.types.Operator):
    """Tooltip"""
    bl_idname = "object.simple_operator"
    bl_label = "Simple Object Operator"

    def execute(self, context):
        main(context)
        return {'FINISHED'}

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

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

if __name__ == "__main__":
    register()

There is also this stack overflow thread. Solution in that thread works for closed loop. I tried to modify it to work for non-closed loop/selected edges but no success. Modified script works in some cases in other gives weird results.

Walk the edges.
To give them some order walk the edges.  It may take more than one spline to make the curve, since we cannot branch.  For example the default cube when "de-faced" and converted to curve has 4 splines.
Here is test script to walk the selected edges. It does not make the curve, rather creates an ordered list of the edges to use in each spline.

Get all selected edges.
Pop an edge, get its two end verts. Tag the edge.
Grow spline from each end on a non tagged and selected edge, prepend at one end, append at other.
Add spline to splines.
Repeat until no more edges to process.

Script
import bpy
import bmesh
from collections import defaultdict

from bpy import context
tag = defaultdict(bool)

ob = context.edit_object
me = ob.data
bm = bmesh.from_edit_mesh(me)
edges = list(filter(lambda e: e.select, bm.edges))

splines = []
def tag_remove(edge):
    tag[edge] = True
    edges.remove(edge)

def grow(end, spline, idx):
     while True:
        nextedge = next(
            (e for e in end.link_edges if not tag[e] and  e.select),
            None
            )
        if not nextedge:
            return
        tag_remove(nextedge)
        spline.insert(idx, nextedge.index)
        end = nextedge.other_vert(end)

while edges:

    edge = edges.pop()
    spline = [edge.index]
    tag[edge] = True
    a, b = edge.verts
    grow(a, spline, 0)
    grow(b, spline, len(edges))
    splines.append(spline)

print(splines)

Result for default cube. Notice 4 splines as with convert.
[[5, 1, 0, 3, 6, 11, 7], [4, 10], [2, 9], [8]]

Result for default circle.  Since edge 30 shares a vert with edge 31 could make this cyclic.
[[30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 31]]

To reverse order, could try swapping which end to append / prepend...


How to make spikes with displacement I'm trying to make this shapes in the image, is there a way to make the randomized spikes?
My first attempts were with hair particle system but it's not connected, so I tried with sculpting but the orientation needs to be almost perfect so it didn't work (the only randomness is the spread /density and the scale/legth). This is why I'm trying with displacement, also because I want to make many variants so I want it to be a non-destructive workflow.
If you know a way that doesn't involve displacement let me know anyway, my goal is to obtain those shapes so even if it's destructive workflow and takes longer it's ok.
Please let me know if you have any ideas, thank you.

You can limit the action of your displacement modifier with a vertex group, to which you will assign only the vertices you want to displace.


Selecting multiple collections & all objects inside them It is possible to right click in the outliner on the collection > select objects. I would also like to select all my objects from another collection. Right clicking and > select objects automatically deselects my previously selected objects. Is there a way to select multiple collections and their content?

YES.
Create a new collection.
Drag-drop the other collections inside it.
Right-click top collection --> Select Objects.
(confirmed.)


Is it possible to use the Extrude or Spin tool to get something to rotationally extrude along a curved path? I'm trying to model a bow and would like to create the upper limb in 2D, then extrude it to make it 3D and lastly mirror it to make a bottom limb. Can I rotationally extrude the outer edges around the inside edges of the bow in Blender? In other words, can I extrude along and around a local edge instead of global?

I'd like to rotate the outside edges locally around the selected edges in order to make the object 3 dimensional. is this possible?

Reference image:

I am not sure I understand what you mean, is this the shape you wish to achieve?

The way I see it you can do it in several distinct ways

Either extrude your whole shape at once and bevel the outer edges of the result afterwards. You can use a mirror modifier in two axis so you only have to model half of it.
Draw the quarter circle shape section as a mesh and extrude it up step by step along those selected edges. You may use snapping to guide your shape all the way up, or
Draw both your section (semi circle) and the path (curved shape) of the bow as a bezier curve, use the section as a bevel object on the bow shape bezier curve. Use the curve radius on a per vertex basis to control the thickness of the bow along the path. (Option I used in the image above and bellow)


How to fake reflective caustics in Cycles? I have learned how to fake refractive caustics, but I still want to know how to fake reflective ones. Like the ones in the picture. Is it the Light Path node?

Cycles does render caustics. But since the light is traced from the camera to the lights the probability that caustics are rendered is very low.
When they are rendered most people call them fireflies or noise.

That's why the Filter Glossy in the Caustics tab is set to 1 most of the time.
When you set it to a low value (or even zero) you will see the noisy caustics.

To fix the noise you now have the option to:

Use an extreme high number of samples
Turn up Filter Glossy
Turn on denoising in the Layers context

So Cycles is capable of rendering caustics but they will always be very noisy.

Edit: the example above is rendered with 10000 samples, 0.5 Filter Glossy and 2px denoising.

Edit 2: It also can help to set the clamping of the direct and indirect light. This will reduce the noise of caustics but also make them less bright.

This example uses a different IOR but you can see by setting clamping of the light fireflies are less visible.


Any way to hide an object while keeping its form? I wanted to rotate within a room but rotating causes me to see the outside walls
So i wanted to hide the walls but still get the way the light is shaped by the holes in the wall (Light placed outside)
to cast onto the interior while i am working in Eevee
So far the moment I hide the geo, the light shape the holes in wall makes, will be gone too

Mix with transparency on the basis of light paths/is shadow ray, and you can make the wall invisible to the camera, but visible to your lights: