What is the Difference between Displacement Node Normal Node and displace modifier? The Displacement node doesn't seem to be much different than a normal map, where as the displacement modifier will actually effect the geometry.  Am I missing something here, is there a difference in the node tree between normal mapping and displacement?

Displacement modifier: affect geometry directly

Normal map: affects polygons perceived orientation in regard to how they reacts to light

Displacement node: affect geometry when rendered (need to be rendering with cycles and turn on displacement in material settings)


Making an object disappear after a few seconds with Python (BGE) In Blender Game Engine, I want to have an object (in this case, text in a HUD, but it could be anything) appear when triggered, linger for a couple of seconds, and then disappear. For example, the player hits a key M to change an object from a cube to a sphere (like in my stackexchange question here). Some text in a HUD appears: "Changed to sphere." The text disappears after a couple seconds, and doesn't come back until the player does something again to warrant a HUD message.
Think of it like how a message like "Picked up health kit (+10 HP)" would display in an FPS, and then disappear after a couple seconds. I know how to generate and display the message, but I don't know how to make it disappear.
Another requirements that may need to be considered: the program can't be stuck during the duration of the fade. So if the user hits M M M in rapid succession, and M cycles between a cube, a sphere, and a cone, I don't want the text to be stuck on "Cube" for 3 seconds regardless, or even the whole program to be stuck until the text goes away. I want it to display the text "Cube" "Sphere" "Cone" in real time as the user hits M, and then when the user hits nothing, "Cone" would fade away after a few seconds.
Here's what I tried so far
My first attempt was this
import bge
import time

def lingerObject(obj,lingertime):
    #Makes object obj (e.g. HUD text) linger for a certain number of seconds, then disappear
    #lingertime should be a time in seconds
    start_time = time.clock()
    end_time = start_time + lingertime
    obj.visible = True
    if time.clock() >= end_time:
        obj.visible = False

"""Elsewhere in the code, I change the HUD text (successfully)
and call this new function to make the object disappear (unsuccessfully)"""
def someFunction():
    #These two lines work:
    hudfield = getHUDfield() #getHUDfield is my function that finds the appropriate text object in the HUD scene
    hudfield["Text"] = "New Message, e.g. Cube"
    #This line (or rather, my function) doesn't:
    lingerObject(hudfield,3)

As I point out in the code comments, it doesn't work. Everything else still works just fine, the text changes every time that it's supposed to, but the text never disappears.
I also tried a while loop instead, and it just made the program run very sluggishly, and eventually the text disappeared and never came back:
import bge
import time

def lingerObject(obj,lingertime):
    #Makes object obj (e.g. HUD text) linger for a certain number of seconds, then disappear
    #lingertime should be a time in seconds
    start_time = time.clock()
    end_time = start_time + lingertime
    while time.clock() <= end_time:
        obj.visible = True
    obj.visible = False

#Elsewhere, lingerObject(obj,lingertime) is called like in the prior code block

I looked around online, I found a lot of HUD tutorials but none on how to have text disappear after a bit. Any help would be appreciated. Thanks in advance!

Making an object disappear after a few seconds with Python (BGE)

Think event driven!
WHEN happens WHAT?
WHEN

after a few seconds

'After' is relative ... checking your details ...

appear when triggered, linger for a couple of seconds, and then disappear

So I guess you mean:
A few seconds after triggered
Solution
when you know the "triggered" event, you can start a timer, counter, whatever that triggers an event after the desired seconds.
Example: Timer Property
Property: "time", type "Timer" (A timer property constantly increases it's value with each frame with the [configured] duration of the frame.)

When your trigger event happens you set the property to the number of seconds to wait and multiply it with -1 e.g. -3 for 3 seconds.

A property sensor can evaluate when the property "time" is greater than zero. That is the event you are looking for.

WHAT
whatever you want
Remarks

Timer properties are always float (avoid "equal" compare)
Lags will not be measured by timer properties
Timer properties always count upwards
Timer properties count always (it will not stop)
You can explicitly assign new values to timer properties (e.g. for reset)


how do I scale text on the z axis? Is there any way to scale text on the z axis? It doesn't work for me and I want to use it to make a hole/carved number in a dice with boolean.

Text Properties > Geometry > Extrude

To use Text object in boolean operation you would have to Convert to Mesh


Eevee render output is black. But it appears in cycles. What I did incorrectly during adjustment? Till half way of my process, all was good. I was able to produce images but now all I get is black images. Checked world environment and lightings too. No luck. Can anyone please tell me what's wrong?
File size: 21.1mb
Link: https://blend-exchange.com/b/kjKW8Pwn
What setting I messed up?

Having a bright, high contrast monitor and good vision, I'm able to see this picture is not completely black:

In future, you can try cranking up the Exposure in Render Properties tab  -> Color Management section (or use compositor to increase contrast etc.) to see what's happening better:

As you can see, your character is cut in half. This happens because the character is overlapped by an object, which also blocks light, putting everything left in a deep shadow.
Right away when you open the uploaded project, you can see the problematic object on the bottom workspace region:

It's not problematic in viewport preview, because it was set to only display as a bounding box in the viewport:

The solution you probably want is to disable rendering of this object by clicking on a camera icon next to the object's name in the Outliner:

Then the render becomes this:


Can I download diffrent poses? I wonder if it is possible to download poses from the internet.
I have a Fortnite-Skin as an object and i want it to make a specific pose, but im am not able to do it.
Can i download one from the internet?

mixamo.com is one way to get poses. (It's free to use you just need to register with a mail address.) There you can download pre-made characters and animations/poses. Alternatively, you can upload your own model (without textures), apply an animation and download it again. Export the model in obj or fbx format in Blender. Make sure there are no messed up UV maps or materials. This may cause the export and import to fail.
If you found a pose, download it and re-import it back to Blender. There you can re-apply the textures OR you can delete all the mesh and just keep the armature. Then parent the mixamo armature with your original mesh (re-skin).
Another way is to use bvh files (motion captures). Blender supports these files and you can import them for poses.


How to create a vertex group? Please someone tell this beginner how to create a vertex group.

Create a Vertex group

Select the faces or edges or verts

In my example i have selected faces

Press Ctrl+G a pop-up (click on assign group)

If u have multiple group and when u click Ctrl+G

Select the group to which u want to assign in the vertex

To check the vertex you have made. Deselect all the faces or edges or verts. And in the vertex panel. Select the vertex group and below press select. And it select all the faces or edges or verts assign in that group


Python: list is populating with wrong order? I have chain of 3 bones which are influenced by IK constraint. IK is added to bone named IK B#3:

I'm trying to populate them into array in reverse order, i.e. IK B#1, IK B#2, IK B#3 in that order.
Code snipet:

bone_list = []

def populate_array(self):

    index = self.ik.chain_count - 1
    currentBone = activeBone
    for i in range(-1, self.ik.chain_count - 1):
        print("\nindex is :"+str(index)+"\n\tcurrent bone is: "+str(currentBone.name))
        self.bone_list.insert(index, currentBone)
        index -= 1
        currentBone = currentBone.parent

    #print out array
    for b in self.bone_list:
        print(b.name)

When i execute this code i'm getting this result:

Why array is populated in that order, what is wrong with my code?

The question is not a Blender question, but anyway...
So use append(currentBone) instead of insert(index, currentBone), to have [IKB3, IKB2, IKB1].
Or use insert(0, currentBone) instead of insert(index, currentBone) to have [IKB1, IKB2, IKB3].
But concerning "why" your usage of insert does not work:
Step1:
bone_list is empty and index is 2.
So bone_list.insert(2, IKB3) gives bone_list = [IKB3]. Explanation: Python tolerates that even if there is no element at position 2.
And index becomes 1.
Step2:
bone_list.insert(1, IKB2) gives bone_list = [IKB3, IKB2]. Explanation: still no element at position 1 (IKB3 is at position 0), so IKB2 is added at the end (which is the closest position to '1').
And index becomes 0.
Step3:
bone_list.insert(0, IKB1) gives bone_list = [IKB1, IKB3, IKB2]. Explanation: there is now an element at 0, so as expected Python add IKB1 before it.


Most efficient way to repeat a cutout pattern Trying to figure out the best way to take this alternating circle cutout pattern and duplicate it around the surface of this cylinder.  This is a file that was given to me- I did not make the initial cutouts.

One way to do this is with a radial Array Modifier (read about it here: How to make a circular array using offset object as center? ) and a Boolean Modifier or the Booltool add-on.
first, for convenience, put your round cylinder thing right in the middle of your scene.

Then put a little cylinder, the size of one of the little holes, on the edge of your big cylinder (make sure it sticks al the way though). In exactly the same spot, put an Empty (can be any Empty or Object). In the image I used a Plain Axes.

Now put an Array Modifier on the little cylinder. Put in the right a number of cylinders in the Count field (just put 100 first and adjust it later).
Uncheck all the Offset boxes, but check the Object Offset box. As a target, choose the empty.
Then make sure the Transform Pivot Point (here at the bottom of the image) is set to 3D Cursor. Press Shift + C to put the 3D cursor in the middle of your scene, and because you put the big cylinder there, in the middle of the big cylinder.
Then rotate the empty on the z-axis. (I think you will need only a fraction of a degree)

Then duplicate your tiny cylinder and go into Edit Mode. Move it a little bit down and a little bit to the side (to get your alternating circle cutout pattern).

Activate the Booltool add-on in the Preferences window.
Select the cylinder array, and then shift select the big cylinder. With both objects selected, choose Difference.

Then hide or delete the cylinder array.
Result with three arrays:

If you want less holes, apply the Array Modifier, and delete the holes you don't want before using Booltool
You can also apply the Array Modifier to two rows of tiny cylinders, make them one object by selecting them both and pressing Ctrl + J. And then put another new Array Modifier on the new combined object with a Constant Offset or Relative Offset in the z-axis direction. And then do the Booltool actions.


It there a way to do edge detection on plane? I know if I have a volume I can do bevel, which gives me edges of each plane. However I only have a plane, and I need to mark the edge of it.
Something like https://blender.community/c/rightclickselect/xBcbbc/ would be great.
And I am using cycles

I believe this isn't possible at present without adding additional geometry to indicate the "edgeiness". However, this can be achieved (in a slightly "hacky" way) if you have a single face by way of the 'inset face' operation.
For example, consider the following mesh :

In edit mode, select the face and press I to start the inset operation then move the cursor to size the inset. If you need to inset further than the geometry allows (concave faces can result in overlapping edges) then you can Scale or manually manipulate the vertices to get the desired shape - the 'fade' will be along the extent of the inset face :

Then all that is required is to allocate the gradient by either using Vertex Colors or UV coordinates. For example, in the UV editor you can select all the 'Inner' vertices and move those to the top edge of the UV map, then select all the 'Outer' vertices and move those to the bottom edge of the UV map and then use the Y element of the UV map to give your edge gradient :

Then you can simply use the UV 'V' coordinate ('Y' from the Separate XYZ) to represent the distance from the edge :


Using Brick or a Procedural texture to shade a chess board A beginner here, hi!

I'd like to create a chess scene, done modelling everything, although have a question with the board itself.
I know that there are much easier ways to achieve it but for the sake of learning procedural texture, I wanted to create it with brick texture.
Here are some screenshots;

But, I'm stuck. So, is it possible, am I stalling my learning process and probably you as well xd? How can I change this randomness?
Thank you very much.

Ge, thanks for your answers.
Here is the result, my first non-follow along tutorial render ever.

I would use a checker texture (Or use this answer to modify the bias in the brick texture to behave like a checker) and darken the color with the black outline of the brick texture afterwards :

Note : The scale of the checker texture must be 2 * that of the brick texture, otherwise the edges won't align.


Texture UVs and Array modifier EDIT: Jachym Michal provided an answer that gets very close but doesn't quite solve the issue.  The following screen shot shows that along the top (and bottom) of the large horizontal pipe the texture appears to align differently from where it does elsewhere.

I'm trying to build a generic radiator model that I can resize by adding or removing segments with the Array modifier.  I created a section I want to repeat (I'm calling it a pipe), and two end pieces for the start and end of the radiator (I'm calling them caps).

After some faffing around with the position of the cap origins so that it would all line up properly I think the end result works fairly well.

However, I started running into issues when trying to add a texture.
I projected the front view of the various sections and made the following UV map:

Unfortunately, when I add a texture image I get this:

There is a UV adjust slider in the array modifier, and I got this to sort of work by messing around with it until I got something that looked sort of OK with the test image.

However, it needs to be exact, because if I was using an actual texture instead of a test image it would be quite apparent if the edges didn't quite line up.
Furthermore, the right hand cap piece doesn't seem to get its texture position updated at all and it's very obvious that it's still using the texture from the left of the image.

So I have 2 closely-related questions:

Can I get the U position to be exist based on the width of the pipe?
Can I get the right hand end-cap to set its UV position such that it will match up with the last radiator pipe's position?

To match it automatically, you can use Object coordinates.

Change texture Mapping > Box
Use Texture coordinates > Object
In the Object field target your array

You can change your array and caps, but the texture will always match.


Volume Scatter in World makes the sky turn black While using the "Volume Scatter" option in Blender the Background turns Black. (I am using Blender 2.79). Here is my issue in detail.

The first image below shows a normal scene with Blue sky (Set using the "World" as shown in the image)

I wanted to add mist to the scene; so i used the Volume Scatter shader and plugged it into the "Volume" node in the "World Output". The entire scene turned black and later I discovered this feature doesn't work with the "Sun Lamp" well. So I added a "Point Lamp" too in the scene. Now the mist appears. But the issue is that the blue background has entirely turned into black as shown in the image below.

I've tried changing the Strength of the "Point Lamp" but it won't help. I would request to kindly inform if anyone knows how to fix this.

(Blatant Quote from the Blender Manual)

Volume World
A volume shader can also be applied to the entirely world, filling the entire space.
Currently, this is most useful for night time or other dark scenes, as the world surface shader or sun lamps will have no effect if a volume shader is used. This is because the world background is assumed to be infinitely far away, which is accurate enough for the sun for example. However, for modeling effects such as fog or atmospheric scattering, it is not a good assumption that the volume fills the entire space, as most of the distance between the sun and the earth is empty space. For such effects it is be better to create a volume object surrounding the scene. The size of this object will determine how much light is scattered or absorbed.

To illustrate this workaround: create a box around the scene (it will cat as a domain) and have that box use volume scatter:

Please note that the volume scatter is plugged to the volume socket of the material for the domain, the surface socket should not be used.


I don't have a Glass BSDF I am new to blender and am trying to make a gemstone. I already have it modeled and am on to texturing but the tutorial I found uses a glass bsdf but I don't have one in my add node selection. I tried googleing it but all I found were more tutorials. Do I need to turn something on or download it?
Thanks in advance.

You are in the wrong editor window (texture editor)

Use the Shader editor.


Objects fly away without animation Novice here. When I slide my cube around my bowling pins, they explode away as soon as the animation starts. To my knowledge, I have not added any animation keyframes to cause this. The pins don't fly away when the box is slid away from them. Im curious what is causing this unanimated movement. Ill include the blend file.

I just downloaded your file and it animates smoothly.
Please try deleting your cache -> Deleting all bakes


How can I scale faces without moving them? I'd like to scale all outer faces of an object without making it smaller.

So in this case I want to make the selected faces thinner(scale them on the x and y axis), but WITHOUT being moved to their origin.
Or in other words: want them to scale to their own origin instead of being scaled to the objects origin.

Of course I could scale each of them individually, but that's a real grind and I wonder, if said thing is possible.


Is there a way to change mouse zooming to go left and right instead of up and down? Alt + Right mouse zooming works by going up and down.

Is there any way to change this to left and right?

Yes, you can change the Zoom Axis to be horizontal instead.


Active object set, object mode set, but still "RuntimeError: Error: Modifiers cannot be applied in edit mode"? I'm trying to apply my modifier to object with Python. I've set the object of interest as the active object and ensured its mode to be object. However, I still receive this error.

Here's the relevant code.

bpy.context.scene.objects.active = obj
bpy.ops.object.mode_set(mode='OBJECT')
bpy.ops.object.modifier_add(type='SUBSURF')
bpy.ops.object.modifier_apply(modifier='Subsurf', apply_as='DATA')

RuntimeError: Error: Modifiers cannot be applied in edit mode

I saved the .blend file right before the error and opened this file in GUI. Then, I ran

bpy.ops.object.modifier_apply(modifier='Subsurf', apply_as='DATA')

that used to cause errors in the command pane, and weirdly it ran without errors!

I checked the object of interest, obj, is indeed in object mode, but there was one object, which was neither active nor selected, in edit mode. When I made all objects be in object mode, the error was gone.

for o in bpy.data.objects:
    bpy.context.scene.objects.active = o
    bpy.ops.object.mode_set(mode='OBJECT')
    o.select = False
obj.select = True
bpy.context.scene.objects.active = obj

bpy.ops.object.mode_set(mode='OBJECT')
bpy.ops.object.modifier_add(type='SUBSURF')
bpy.ops.object.modifier_apply(modifier='Subsurf', apply_as='DATA')

Could someone confirm if this is a bug in Blender? Two reasons:

I don't see why other objects are required to be also in object mode for us to apply modifiers to the object of interest.
GUI behavior doesn't match commandline behaviors.


Render animation in png's give same frames When I render an animation in multiple png's blender outputs all the frames. The only problem is, all the png output files are the same.
Thanks in advance

thx for the file, found the problem:

two things:
1. bake cloth simulation: "Bake All Dynamics", otherwise eevee wont simulate it as  Blender would do it by pressing play in 3D View.
2. Your Render step in the Output-Menue was at 1000, so you would only get 1 frame. Just put it to 1 and everything should work fine.

just for completness: i used "blender-2.80.0-git.957b4547aeeb-windows64" build to test it.


Program Wide Key replacement Is there a way to quickly replace the middle mouse button click with something like mouse button 5?

I looked around and found this middle mouse key alternative.
It would be nice if I could change the emulated: 3 Button Mouse from Alt + LMB to mouse button 5.

Is it possible to change a button or shortcut program wide?

I can recommend an application like X-Mouse Button Control, it allows you to assign any virtual key / shortcut to any mouse button (per program or globally), I use it to trigger some special Blender features (like Render Only) by mouse side buttons.


Blender Cloud Login For 2.91 I just bought Blender cloud, and I'm trying to find how to login. I saw that there is an addon but I was unable to find it. Is the Login Addon supposed to be included in blender cloud addon?

https://docs.blender.org/manual/en/latest/addons/system/blender_id.html
System: Blender ID authentication addon.
Search for ID in search and you will find it.
This is a doc loop that is unclear - a ticket should be put in place to mention that the addon referenced is an addon and not a website.
tickets can probably be put in to https://github.com/dfelinto/blender-cloud-addon


Weighting with Cast Modifier Is there anyway to use weight paint to determine the influence on different parts of an object while using the cast modifier? If not, is there any other way something like this could be achieved (maybe something with vertex groups)?

This is what the Vertex Group option is for:

Start weight painting; a vertex group will be automatically generated.
Select that group in the cast modifier:

Note that Vertex Groups and Vertex Weights are really the same thing; the weights seen in Weight Paint mode belong to the highlighted vertex group in Properties > Object > Data > Vertex Groups.


Rabbit creature's facial features are not moving with the face So I recently modeled a rabbit character and joined all the different pieces (like the eyes, arms, legs, etc.) and then rigged it, following this tutorial.
When I finished rigging, I went into pose mode and rotated the top bone. But the eyes, blush, and left ear didn't move with it. Only the face and the right ear rotated, as shown in the second picture below.
I have searched this up and read this question, but nothing helped. Here are some screenshots of my project:
Picture 1: Rigged character in the t-pose

Picture 2: Rotating the bone

Picture 3: Rotating the spine (Front View)

Picture 4: Rotating the spine (Side View)

Note: Picture three and four are rotated differently so you can see the eyes blush, and nose aren't moving with it.
I was wondering if I had to do some weight painting?

When you create your rig and set it as the parent of your model, you have to choose, how the weight for the bones are created. This determines, what parts of your model are affected by which bone.
If your model is one object with several parts, all you need to do is to add all the parts you want to be affected to the vertex group. You can find that under Properties -> Object Data Properties -> Vertex Groups. You can either go to edit mode and set all the verticies you want to be affected as part of the vertec gropu coresponding to your bone, or you can go to Wight paint mode and do int there. In weight paint mode, you can also see the poses. For more complex models you would use weight paint mode, but for your model, i think manualy adding all the verticies in edit mode might work fine.
If your model is split into several objects, you need to set the armature as parent for each object. Then you can adjust the vertex groups and weights the same way.


How to overlay Alpha masked image over finished Video without re-rendering the whole track? How can an alpha masked image (PNG with alpha) be overlayed over an already finished video footage?

I have a filmed (not rendered) Video footage with approx 40.000 Frames. Over the first 200 frames, there should be the mentioned overlay.

Everytime i do so, the whole video strip renders the wholel 40.000 Frames, even tough only the frist 200 were changed by adding the overlay.
Is there a way to change only the first 200 frames by adding the overlay, and then "stitch" it to the unchanged remaining 39.800 frames?

Thanks for help!

The only way I know is to split the video in two parts (200 frames and the rest), do the changes to the first part, render it, and than join the parts.
BUT! To join parts without decoding the second one, you must render the first one with exactly the same parameters (codecs and so on). There are different programs for splitting and joining footage without decoding. It's not a problem to find one. But the main problem will be to adjust rendering parameters for the part that will be changed. Otherwise it will be decoded and than it all doesn't make any sense.


Bones do not move geometry I have brought an IFC of a crane into blender. The Jib (The arm with the hook at the end) is one group and I am trying to use bones to make it so I am able to lift the jib up and down.

I have created a bone through the center of the jib from the base to the end of the Jib. I then click on the jib, and then onto the bone and Ctrl+P. I am unsure which option to choose, but the jib should not deform as it is steel and would not deform in real life. I have therefore tried every single option and none of them allow me to move the jib in the correct way/at all.

after using Ctrl+P the crane moves to the end of the JIB and rotates so it is horizontal. I do not want the crane to move, I want the bone to affect the jib when I move the bone.

What am I doing wrong?

If the Jib is an object in its own (different object than the crane) you should select it, then shift select the bone (in pose mode), then press Ctrl P and choose the "bone" option. In 2.8 you will have also to check the "relative parenting" bone option as shown in the picture.

The bone parenting will transform a whole object accordingly to the bone transformations, whitout deformings, but if the crane is the same object it will be moved too.

If the crane and the jib are in  the same object you have two options:

1) select in edit mode all vertices of the jib, press P and separate the jib from the rfest of the crane, then follow the same procedure.

Or

2) select the whole object, shift select the armature, press Ctrl P and choose "with empty groups". Then select the crane, in edit mode select all vertices of the jib, select the right vertex group in the properties panel and click the weight assign button.


How assign shortcut to custom function? i have this simple function in the Blender text editor :
import bpy
bpy.ops.object.select_pattern(pattern="Cube?")
bpy.ops.object.select_pattern(pattern="Sphere?")

I just simply want to run this function using a shortcut. How can i bind a shortcut to it ?
Thanks.

You would have to implement a custom Operator and add your code to its execute method:
class OBJECT_OT_CustomOp(bpy.types.Operator):
    """Tooltip"""
    bl_idname = "object.simple_operator"
    bl_label = "Simple Object Operator"

    def execute(self, context):

        # Your code here ...
        bpy.ops.object.select_pattern(pattern="Cube?")
        bpy.ops.object.select_pattern(pattern="Sphere?")

        return {'FINISHED'}

shortcut.py based on Create keyboard shortcut for an operator using python?
import bpy

bl_info = {
    "name": "Your Addon Name",
    "author": "Author Name",
    "version": (0, 1),
    "blender" : (2, 80, 0),
    "location": "",
    "warning": "",
    "wiki_url": "",
    "tracker_url": "",
    "category": ""
}

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

    def execute(self, context):

        # Your code here ...
        bpy.ops.object.select_pattern(pattern="Cube?")
        bpy.ops.object.select_pattern(pattern="Sphere?")

        return {'FINISHED'}

addon_keymaps = []

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

    # Add the hotkey
    wm = bpy.context.window_manager
    kc = wm.keyconfigs.addon
    if kc:
        km = wm.keyconfigs.addon.keymaps.new(name='3D View', space_type='VIEW_3D')
        kmi = km.keymap_items.new(OBJECT_OT_CustomOp.bl_idname, type='W', value='PRESS', ctrl=True)
        addon_keymaps.append((km, kmi))

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

    # Remove the hotkey
    for km, kmi in addon_keymaps:
        km.keymap_items.remove(kmi)
    addon_keymaps.clear()

if __name__ == "__main__":
    register()


Equal delays between animations I have modeled a vessel which carries tons of weight I want to make a kind of building animation for the vessel all the parts drop from top smootly and sequent do you have ideas how to make it.

Start with each piece as a different object, that is each piece which you want to fall into place at a different time. In edit mode press P and choose loose parts or selection to break larger objects into smaller pieces.

Go to the end of the animation and insert a keyframe for the location of each piece. A to select all, then I->Location. now go back to the beginning of the animation and move everything up so that it is out of the camera view. Insert another keyframe, I->Location.

Now that everything is falling at the same time, go into the dopesheet and stagger the start and end times for each piece.

While it might have a learning curve to start, you may also want to consider using animation nodes.


Is there a way to combine/flatten multiple edges together that are in a checkerboard pattern? I've looked everywhere on this and all i see are the typical instructions on how to merge edges together that are perpendicular to each other (such as two cylinders that need to be merged together on there ends using Bridge). But what i'm referring to is two flat planes in the shape of a triangle comprised of multiple edges (that criss-cross together in a checkerboard pattern) which i need to be laid on top of each other and merged (so that it auto-creates all the vertex points proving they've indeed been merged). Does anyone know what to do to accomplish this or is it not possible in Blender. Maybe a addon somewhere?? Anyway, see attachment. Oh and thanks!

Here's the screenshot

If I'm understanding your question correctly, you should be able to select the 2 planes and Join so they are the one mesh. Then if you select the vertices you want merged you can click Remove Doubles and it will remove the duplicate vertices, essentially merging them together.

EDIT: Now that I understand what you were meaning, the only suggestion I have is to get rid of the vertical edges and create them within the original mesh. I tried it myself and it's a little tedious, but gets the same result I think you're after. First subdivide the bottom edge into how many segments you want, but remember that the Number of Cuts is one less than the number of segments (eg. 9 cuts for 10 segments) and then manually connect each set of vertices and pressing J. If that doesn't achieve the results you're after then I'm afraid I'm out of ideas :)


Enable/disable 3D cursor tool properties from python I'd like to enable Surface Project and set the orientation mode of the 3D Cursor from python, as if I did it from the header's tool settings.
Note that I only want to change its settings, not move the cursor in the process.

For example I'm pretty sure that

bpy.ops.view3d.cursor3d(use_depth=True, orientation='GEOM')

requires to move the cursor.

So I looked inside

bpy.context.tool_settings

and

bpy.context.workspace.tools['']

by tabbing like crazy in the tree of python objects but didn't find those settings.

Is it actually possible to change them from python?

You can set the active tool using bpy.ops.wm.tool_set_by_id(name = "builtin.cursor") and use ToolSelectPanelHelper class to get a reference to it. Code based on Operator Simple template:

import bpy
from bl_ui.space_toolsystem_common import ToolSelectPanelHelper

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

    def execute(self, context):
        # Set the cursor tool
        bpy.ops.wm.tool_set_by_id(name = "builtin.cursor")
        # Get the tool
        tool = ToolSelectPanelHelper.tool_active_from_context(context)
        # Set the properties
        props = tool.operator_properties('view3d.cursor3d')
        props.use_depth = False
        props.orientation = 'GEOM'

        # Print all properties
        print (dir(props))
        # [..., '__slots__', 'bl_rna', 'orientation', 'rna_type', 'use_depth']
        return {'FINISHED'}

addon_keymaps = []

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

    # Add a shortcut
    wm = bpy.context.window_manager
    kc = wm.keyconfigs.addon
    if kc:
        km = wm.keyconfigs.addon.keymaps.new(name='3D View', space_type='VIEW_3D')
        kmi = km.keymap_items.new(
            SimpleOperator.bl_idname, type='C', value='PRESS', ctrl=True, shift=True)
        addon_keymaps.append((km, kmi))

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

    # Remove the shortcut
    for km, kmi in addon_keymaps:
        km.keymap_items.remove(kmi)
    addon_keymaps.clear()

if __name__ == "__main__":
    register()

Just run the script (or install as add-on) and press CtrlShiftC to enable the Cursor Tool along with your custom properties (use_depth, orientation in this case).


How to slow down an object following an animated path? I was wondering on how to slow down the speed of an object following a path (that has been animated.) I'm trying to slow down how fast the UFO (with a particle system) goes along the bezier circle I've made, but I can't seem to find that option.

Never mind, found it! If you click the bezier curve (or circle in this case) and go to the Data tab, scroll down to see Path Animation, and increase the frames which decreases the speed.


Child of constraint with bones and objects Trying to attach a bone to an object outside of the rig but its just not following with the child of constraint. I've clicked set inverse but it still doesn't follow. Can you actually make bones do this?

Nevermind. I just made another external bone and it tracks no problem. If anyone can tell me if childing to an object and not a bone is possible id love to know where i went wrong


Particle System + Collision I am having an object, it has particle system with velocity 0. I have a sphere that acts as the collision to collide with the object & its particle system. The sphere did interact with the object, but it seems like it does not collide with most of the particle (as shown in image below). May i know what could be the problem or setting that need to be adjusted? I will attach the blend file in case someone would like to have a look in it. Thank you so much.

Ok, Everything is fine all you have to do is change the end frame to your desired value at the moment you have kept both frame start and end for particle system the same, Change that.
if you want the particles to disappear change life time.


Align object with group of vertices I've got two objects which used to be one that I want to join back together. however, the alignment is now off. I'd like to move and rotate the edited object in whatever way is necessary to get their vertices at the edge to match.
In other words, I have a perfectly identical group of vertices on two different objects. I want to move one object so that it's group of vertices match the other.

I've found several ways to match one point, but because the rotation is wrong, none of the other points are aligned correctly.

In the pictures provided, I've selected the vectors that should be matched.

I wasn't able to find a way to perfectly align the peices with a snap of sort like I had hoped. That said, I was able to find a method that allowed me to align them to a degree of precision that makes it so that even the part that should be the furthest away is aligned to match exactly to within a millionth of a unit.

Snap one vertex

Enter Edit mode on the object to be moved (Select it and press Tab)
Select one vertex
Move the 3D cursor to that spot (Shift + S, Cursor to Active)
Exit Edit mode (Press Tab)
Set the origin to that point (Shift + Control +
Alt + S, Origin to 3D Cursor)
Turn on Snap During Transform (Shift + Tab)
Set its Type Of Element To Snap To to Vertex (In the header, next to the magnet icon)
Set its Part To Snap Onto (just to the right of the Type Of Element To Snap To) to Active
Move it until it snaps (G key to move, move your mouse to the vertex that should align)
Rotate it most of the way
In this case, I knew that it was already knew it was aligned on one axis, so I rotated it along that axis (in this case the Z axis). Because the origin is now at the perfectly aligned vertex, it won't move if you set the Pivot Center to work by its origin (On the header, to the right of the mode option and the display method, set to Active Element)
I rotated along the Z axis (R to start rotating,Z` to then constrain to the Z axis). I got it decently close.
Fine tune
I then zoomed in as close as I could get to the point that would be the furthest away (opposite side of the circle of vertexes) and started editing the object rotation while in Object mode and wireframe view mode (Z while in Object mode). You can find this in the Object section of the Properties window. I just edited the Z rotation little by little until it matched as closely as I could get. After checking, there is zero difference in the position of the vertexes now.


distance to camera as text I would like to render 3 dimensional text which both includes unchanging text, and automaticly calculated distance to camera (in the units specified under the scene tab), which should look something like this:

is there any way to do this in 2.78, are there any third party add-ons (for Blender 2.78) which allow me to do this or is it possiple to achive this through blender python scripting?

Turns out the Text Counter Plugin can be used to solve this problem; this plugin was made to animate text counting up/down, but using drivers it can also display distance to another object (or any property which can be used in drivers really).

After installing the plugin, add text, go to the text tap and find and activate text counter

If desired change »padding« »decimal«, and use suffix and prefix to write what will be before and after the distance displayment.
Then add a driver to counter value

finally go into the graph editor and change type from graph editor to drivers, select the current driver; find »drivers« tap in the disebar to the right, if driver type is not scripted expresion, make it scripted expresion; under variables add new variable (if one does not already exist) change type to distance and as object 1 and 2 select camera and the text.

then change expresion to

var*scale

where var is the name of the distance variable, and the scale is the scale between blender units and the desired units; in this scene i have 100 meters for each blender unit, and i want distance to be displayed as kilometers, therefor my scale is 0.1:

The text now automaticly calculates the distance as the camera and the text moves around the scene.

Unfortunately the suffix and prefix of the text can not be multilined (not even by typing in \n) and only one changing number per text object is supported


Rendering appears all grainy and dark after using Diffuse BSDF I've been trying to get a multi-colour gradient (more than 2 primary colours), so I followed a few tutorials using:

texture coordinator - mapping - gradient texture - color ramp - diffuse bsdf - material output

But the end result is a horrible grainy dark rendering.  I want to get a nice mult-colour gradient from the bottom up.

http://www.pasteall.org/blend/38975

Your matierial is flawless and gorgeous. It's your lighting setup you need to fix. Move your lamp a little further away from your objects and crank up the strength. I put it about halfway between your objects and your camera and put the strength to 3000. Also on the lamp, lower the bounces. If dark sharp shadows are what you're going for, lower the size of the lamp to zero, as well. That will reduce some of the graininess. A lot of it is also simply render samples. Go to your light paths and pick 'Global Illumination' from the dropdown. Increase your render passes to 200 or higher. If you find it's rendering slowly, go to performance and change the tile size to a multiple of 8. (I just went with 8).


Why won't my textures work in Blender 2.76 I'm new to Blender and have just started to learn texturing in Blender. The problem is: when I apply textures to the default cube displayed at startup, the work and render perfectly, but when I add a new mesh (regardless of whether I deleted the cube or not) the texture doesn't render at all and most of the texture options are completely missing. I'm not sure if it is a malfunction or if I'm doing something wrong. I tried reinstalling Blender and I also tried a previous version (Blender 2.75) and the same thing keeps happening. I would really appreciate it if someone could give me some advice. Thanks in advance.

You might have missed this step.

For every new mesh you create, you need to apply at least one material. Without
the material applied your texture panel will be empty. This is the confusing part of blender. Though it can be improved, after working with blender for a while, I find it fairly easy to use.

TAKE NOTE

There are 2 Panel you need to be aware of whilst starting to learn about material. The material panel and the textures panel are separate panels, but
they work together.

Also I am assuming that since you are a new user, you would be on Blender Internal Render engine and not cycle. Hope this helps.


How to inset an extrusion with the rest of the shape? Hi I have extruded part of a block but now when I try to inset the top face of that block with the extrusion it insets the top face of the extrusion separately rather than doing it with the rest of the block. How do I inset the whole thing as one object?

Start with a cube.

select the cube

press S -> Z and scale it flat as you need

press S -> Shift Z and scale as you need

Tab -> edit mode

Face select

press CTRL - R and insert loop cut

scroll up your mouse wheel until you have 2

click on mouse twice to confirm

select this face

tab E to extrude and extrude as you need

select all top faces

press I and move mouse as you like

now you can extrude again with E if you like

optionally: if you press S and move you mouse you will get:

video tutorial here:
https://youtu.be/mj6LjXgf5c4


Walk mode camera "jumps" back when stopped I am quite new to Blender and I don't know if this is some setting I messed up or a bug.

When I use walk mode/fly with Ctrl+F it all works fine, but when I want to stop and go inside a wall for example and stop to look at a certain detail the camera always jumps a bit behind where I am and down... I have looked everywhere in the User Preferences and found nothing to change this jump.

When I create a new Blender project walk mode works as it should again. It gets really frustrating since I can never position myself with walk mode, I always end up inside a wall or somewhere so that I can't see the detail I am trying to work with.

Here you can see me trying to look at the edge of the building. When I stop flymode/walkmode, it pushes me into the edge.

I'm using blender 2.78a.  I've been dealing with the same issue, and I found a work around.

If I zoom all of the way in before entering fly mode, the "jumping" no longer occurs.  If I zoom out before entering fly mode, the "jumping" gets worse.


How do I setup an emission map for blender internal? What I want:

I want to take a model that has an albedo/diffuse, normal, ao, specular, gloss maps, etc. and I also want to add an emission map that will cause specific parts of the model to glow based on the colors represented in my emission map. Basically I want to achieve what this person seems to be doing with no issues: http://youtu.be/crMxJ6Ge1jE.

What I am getting:
The results that I get is that the emission map acts like a traditional stencil where whatever colors I paint on the emission map are cutout and whatever is underneath in the albedo/diffuse map shows up instead of what is on my emission map.

What I have tried:
I took a cube, created a material and a texture slot and textured it with a blue color like this:

I then created an emission map (green dot painted on it) and assigned it to a new texture slot. Here you can see the two maps that I am using.

I have tried several emission map setups as follows:

Emission Map Setup #1

Influence (All defaults except):
Color unchecked
Emit checked with value of 1
RGB to Intensity checked
RGB 0,0,0 (Black)

Emission Map Setup #2 (tutorial method)

Influence (All defaults except):
Blend mode set to Divide
Negative checked

The tutorial method didn't work at all. With no lighting, the cube was pure black with no emission.

Here is the blend file (zipped)
https://dl.dropboxusercontent.com/u/6647893/Forum_Help/EmissiveProblem.zip

You should probably read mataii's answer first.  He brings up a good point and since watching a 10 minute video isn't something I wanted to do I did miss the point of the question a bit.

Several of the influence parameters for Blender Render(Internal) materials are only able to access the textures 4th component: the Alpha channel.

It would be nice if we could choose from (x,y,z,a) so that we could pack 4 masks into one texture and use that texture for Emission, Specular Intensity, Hardness, etc... but for now, if the influence uses a mask, that mask has to be in the alpha channel of a four component texture.

If you want your Emission mask to have color then also check off 'Color' :)
For the Emission mask, you had "RGB to Intensity" activated right below Blend->mix under the Influence section.  That causes the green to become blue so be sure to uncheck that.

The following image shows what happens when Emit is checked and there is no light in the scene.  The object becomes bright blue and there is no hint of the green blob.  That's because the Alpha channel for that image is pure white and this makes Emit 1.0 for every point on the model.

In the following image I have the Color Influence activated and set to 1.0 and the Emit influence set to 1.0 as well.

You can test the effect that an alpha mask has on Emission by going into Texture Paint mode and make sure that the Emission texture is selected. Now select Erase Alpha from the Blend menu.(If you use a pen tablet you should be able to skip that last step since the pen's eraser is supposed to automatically use Erase Alpha.  It does for me so if it doesn't for you that's a bug report.)

I believe a quick animation is now in order and there is one sun lamp in the scene to show contrast.

For Cycles the Emission texture is plugged into an Emission shader and the same texture is also being used to control the mix factor for a Mix Shader that has a Diffuse shader plugged into the other input socket.

The Emit texture is routed through a 'Converter->RGB to BW' node since color should be avoided for masks.  The Mix Shader uses black and white(0.0, 1.0) to determine the mix factor so we want to make sure that what goes in is also single a channel value.  (This helps keep things predictable though not strictly necessary.)

For Cycles, the texture's Alpha channel doesn't matter here since your mask can be in any one of the channels and easily accessed using either of the "Separate XYZ/RGB" nodes.  In this case all three color channels are the mask, that's why I converted to black and white.  An better option would be to separate out the green channel and use that since it's the mask in this case and adjusting it would also adjust the others if they are still combined.


why do changes to the armature made in edit mode vanish when I change modes? Sorry for the basic question!

I found out that my knees in the blender armature where not bending because I extruded them in a straight line. When I tried to create a bend in them in edit mode, the legs would revert to their straight position in edit and pose mode.

Why is this???

Unlike plain objects armature bones have two defined positions. The first position is known as the rest position (or rest pose) and is the position while in edit mode. While in pose or object mode the pose position is used. This pose position is the one that you keyframe to get animations.

While in pose mode any movements are retained as locations relative to the rest position, You can rotate a bone in pose mode then go into edit mode and move it sideways, it will also move sideways in pose mode but will also retain the rotation that was applied before the edit was made.

While in pose mode you can select bones as desired and clear any rotation or location changes to get the armature back to a rest pose with AltG for location and AltR for rotation.

In the armature properties you can also switch between rest and pose position to see any pose alterations.


Why do my unwrapped UVs appear outside of the UV canvas? I'm trying to texture a model from a video game, but when I use Unwrap some of the UVs appear outside of the canvas,

and are not included when I export the UV map for editing in Photoshop.

I could fix this by translating the UVs onto the canvas, but they wouldn't all fit, and I don't know how/if it is possible to resize the canvas manually.

As you could guess I am quite new to 3D modeling - any ideas on how to fix this?

It appears that something went wrong in a proccess of your unwrapping since there is that line that take up all the space in your grid. Maybe missed some seems? Though, for a sword blade i would use project from view

It also appears that tou havent applied the scale for you mesh. If you ever rescale, rotate or move around your object (in object mode i believe), you have to press CTRL+A while you have your object selected in object mode and select one of the options you need.

If you are unsure what you have changed, while having your cursor inside the 3D View area (where you can see your objects basically), press N and in the window that came out of the right side, check if the locations and rotations are all set to 0 and if the scales are all set to 1. If they are not, that means you have been transforming your objects without applying the changes


Screw Modifier with varying Offset I have a long spring modelled using a circle and screw modifier. But I do not want every iteration of the spring to be evenly placed. I want to be able to control where the iterations are dense and where sparse. How could this be easily done?

I don't know how to achieve this with the screw modifier, but this can be done with a modified helix curve and a circle as bevel object.
Method 1: Lattice
For this methods you will have to create a helix screw curve. This can be either done by creating a mesh with a single vertex, using the screw modifier and converting the mesh to a curve, or by using the included add-on Add Curve: Extra Objects which allows you to add a helix spiral by selecting Add > Curve > Profiles > Helix (3D).
Now add a Lattice object and (in object mode) place it so that it surrounds the spring. In the Data tab of the Properties area set a sufficient number of subdivisions.

Add the Lattice modifier to the helix curve and make sure to turn on Apply on splines' points.

With the Lattice selected, go into edit mode and move the vertices to create the desired spacing.

Method 2: Calculate control points' position
Another approach would be to move the curve's control points to the final position, with either a script or with some add-on. The add-on Animation Nodes provides an interface to enter custom interpolation curves which makes it very convenient to change certain parameters of the spring. But of course it's also possible to use a more simple for loop instead.
The following Animation Nodes node setup will allow you to modify both the spring's spacing as well as the radius:

Link to .blend file with the node tree


Horrible AO Texture Bake I am trying to bake the AO from a high poly model to a low poly one, however I keep getting a horrible looking texture, I have tried deleting other meshes that may be overlapping with the models but it still seems to be happening (My model is UV unwrapped properly).

I have also tried baking from AO directly and also plugging an AO node into diffuse and trying to bake that.

The Steps I have followed are:
1) Turn on ambient occlusion in the world tab.

2) Hook up an ambient occlusion node to the diffuse of high poly material

3) Create blank texture map
4) Select the High Res, then Low Res.
5) Select newly created texture.
6) Then Select 'Bake'

Is there something that I am missing, I did a similar process for my normal and cavity maps and it worked fine.

I am really struggling with this and would appreciate any ideas as to what I could do. Thanks in advance.

It turns out my issue was with some hidden geometry (the original sculpt).
The AO map came out looking as expected after this was hidden from the renderer.

Sorry if anyone was in the process of answering.


How to ignore backfaces when doing a raycast? I am using a raycast (just like in the template "operator_modal_view3d_raycast.py") to get a face index. The object the ray is cast on is a cube with inverted faces (directing inwards). Unfortunately the ray returns the index of the first face it hits although it is a backface. How can i make the raycast ignore backfaces so it returns the index of the first frontface it hits?

Did it. I did not even bother if front or backface was hit because the first hit is always backface, so i just added a small offset to the hit vector (depending on view vector) and used it as new origin for a second raycast.

ray_origin_offset = mathutils.Vector((0, 0, 0))
if view_vector[0] < 0:
    ray_origin_offset[0] = -0.0001
else:
    ray_origin_offset[0] = +0.0001
if view_vector[1] < 0:
    ray_origin_offset[1] = -0.0001
else:
    ray_origin_offset[1] = +0.0001
if view_vector[2] < 0:
    ray_origin_offset[2] = -0.0001
else:
    ray_origin_offset[2] = +0.0001
ray_origin = hit + ray_origin_offset
ray_target = ray_origin + view_vector
hit, normal, face_index = obj_ray_cast(obj, matrix)


Get parent from a collection that's already in a collection Im really struggling with what seems to be an easy task, however Im not able to make this work.
I need to get the parent inside of a collection that's already in a collection,
with the code im using
    print(collection)
    if collection.name == doorname:
        door = collection.children[0]
        print(door) //OUTPUT: <bpy_struct, Collection("Door") at 0x7ff8f180b678>
        for objects in door:
            print(objects) //Error

I want all the objects in the Door collection to be printed.
Is there a way to do this, what am I missing?
Thanks in advance!

Maybe for objects in door.children since you're parenting them?

Yeah it could be cool to use magic method looping over children


Rendering multiple model configurations I have a model of a furniture
I have these parameters :

3 types of wood,
5 colors of the frame
6 size.

It's 90 possible configurations of the furniture.

How can I manage the scenes and render the batch of the different configurations ?

If the parameters that varies can be keyframed, you can do something like that :

add keys for your frame color on frames 1 to 5
add keys for your wood on frames 5, 10, 15 (5*n 3 times)
add keys for your size on frames 15, 30, 45, 60 ,90 (15*n 6 times)

In the Graph editor, make all your channels cyclic extrapolation, and all your keys constant interpolation.

Select a picture format as render output (not a video format), and render a 90 frames animation : you will get 90 different pictures.


How to swap the "visible" box option in the visibility actuator? I have this script.

import bge
from initialization import initialization

initialization(__name__)
scene = bge.logic.getCurrentScene()
cont = bge.logic.getCurrentController()
obj = cont.owner
act = cont.actuators["Aura"]
status = act.visibility

if Flashlight["targetName"] == str(obj).replace(" ","_"):
    status = True
    cont.activate(Aura)
    print ("TRRRRUUUUUUUUUUUUUUEEEEEEEEEE")
else:
#   status = False
    cont.deactivate(Aura)
    print ("FAAAALLSEEEEEEEEEEEEEEEEEEEEE")

Logic bricks are like this:

It works, but I wondered why setting the status = False (at line 17-comment) and then swapping the line with cont.activate(Aura) would not work.

So my question: Doesn't "act.visibility" toggle the "Visible" box option to ticked if True and unticked if False? If yes what does it do and how can I swap the status of the "Visible" box option. *searching for a python solution

p.s. My script checks a string value, if it is equal to the object's name it makes a mesh that acts as an aura visible for as long as the value remains equal.

Variable assignment

status has no relationship to act.visibility. You can't expect to change the variable and the actuator takes over this change. You need to change the actuator, not a variable that contains an earlier copy of the attributes value:

actuator.visibility = False

Know the API:
Due to the dynamic nature of the requested behavior I recommend to toggle visibility with KX_GameObject.visible

owner.visible = True

Remarks:

I wonder how your code can work without errors

Flashlight is not defined
Aura is not defined

I strongly suggest to use complete words for naming. "cont", "obj", "act" are unnecessary abbreviations leading to confusion. e.g. is act an actor, action, actuator, or an act? Is cont an contact or continuation? Is object an objective?

If we already have words why invent new one? :)

Your code can look like that:

import bge
from initialization import initialization

initialization(__name__)
scene = bge.logic.getCurrentScene()
controller = bge.logic.getCurrentController()
owner = controller.owner
aura = controller.actuators["Aura"]

if Flashlight["targetName"] == owner.name.replace(" ","_"):
    aura.visibility = True
    cont.activate(Aura)
else:
    aura.visibility = False
controller.activate(aura)


Displace adds an extra noise Anybody knows if I can limit the noise generate by displace modifier? On my test I have used a picture like following.

But the results are like this:

There seems to be unexpected noise on the edges. The problem comes worst when I try to subdivide the plane over 100 times. Subdividing I'm using to make smooth edges.
Here is a screen capture from original file showing that there were only two colors used on the edges. The yellow rectangle on blender picture shows the place where this part has been taken when the original image has been zoomed in 600%.

Why do you need displacement?
For a shape like this it would be a lot easier to create clean geometry and with a lot less vertices.
Or trace the shape as path in a vector drawing program (inkscape, illustrator, etc) and save as SVG to import back to blender.
Diagonal lines will always be jagged in raster formats (and in this case you see clearly how compression creates other artifacts).


How to orbit previously weight painted vertices in Blender? Is there a way in blender to orbit around the vertices or vertex that was previously painted in Weight Paint? Like in the Add-on section?
Im trying to clean up this hind leg mesh, but im having trouble positioning the camera to paint well.

You are looking at this operation here :

Weight Paint mode

Go to Navigation panel on the 3d View
Go to View Section.
Turn on lock to cursor.
I suggest installing the "Enhanced 3d Cursor" add-on so you can snap the cursor to the mesh surfaces.
Now your viewport camera is locked to the location of the 3d Cursor.

In Edit Mode

Go to View Menu on your 3d View Panel
Look for "View Selected"
Now your viewport perspective/orthographic view will rotate around the selected object.


Texture paint mode: is is possible to paint over multiple materials? Let's say I have a cube with two materials assigned to it: cat and dog.
The cat material is assigned to one face, and it's a simple image texture node with a picture of a cat.
The dog material is assigned to another face, and same node setup.

Now I understand that a model can be assigned multiple materials,
but each face can only be assigned one material, and so my question is:

Is is possible, in the texture paint mode specifically, to create a painted line that would start from the dog face and end in the cat face?
If so how?

Now it seems to me that it's not possible unless you make two textures (splitting your painting in two in this case), one for the dog, and one for the cat, but I'm a beginner so I still hope it's possible somehow in a simpler manner...

If you are using Cycles, this is as easy as copying and pasting the new overlay image texture set up into the second material so that when painting on the single image, it is references in both materials and can allow interaction in Texture Paint mode with Material Draw mode. I have a screen shot to show a simple two side set up.


What is fastest, rendering on a CPU or a GPU? For Christmas my parents gave me a new graphic card. Even though I got a new card (R9 390), the rendering times are really slow.
I am asking if I should get another card instead or perhaps its better to get another CPU like i7 5820k. Right now I have a i7 4771.

When I have saved some more money I could buy a better processor, but perhaps its better to sell the graphic card and buy another card instead? Perhaps a gtx 980ti? I am 12 years old, so  I dont want to waste my money.

Rendering is an extremely complicated process, thus the actual rendertime of a given scene depends on vastly more things than the actual hardware. Things such as scene size, shader complexity, and poly count (as well as dozens and dozens of other factors) all play into rendertimes.

Since there are literally hundreds of factors that affect rendertimes, it's really impossible to say how long a given scene would take to render.  Even if you knew all of the major factors it would still be virtually impossible to quantify these and say "it will take X hours to render, without actually rendering it.

That said, you can somewhat accurately generically compare the relative speed between two pieces of hardware.  So most of the time the gtx980ti will be considerably faster than most any CPU.

That said, I'd say save your money for now.  Your current specs are pretty darn fast, rendering is just a complicated process and will take time no matter what your specs are.  In the future I'd probably upgrade the GPU to an NVIDIA, but it won't be massively faster (unless you go for a Titan or m6000 or something like that). Compare your times to this article, it's a year old but still fairly relevant.

You may also want to consider going for two less powerful GPUs (provided your motherboard is SLI capable) and getting them one at a time.


Why will only this appear but nothing else? I'm trying to make an animation where a sun spins, then explodes into a supernova and a black hole appears. But I can't seem to get the flares for the sun to stay and when I try to do a test render for the supernova all the light stays in one spot.
Yes, I am using 2 domains for this because I can't use 1 domain for what I need
I baked everything multiple times to make sure everything did what I wanted
I'm using the particle system to get the explosion effect than using the settings for the smoke.

Fluid Cache End is set only to 50 and for second Domain 500 even animation ends in 1000
Source - Particle System is set, but you didnt specify which one (second field bellow)

Additional issue can come from ...

you set cache directory same for both domains
(it means second will overwrite first one bake)
each flow affects all domains, if you expect one flow affects one domain and another flow affects second domain you have to set them into collections and set specific collection to each domain

Also I see you use Blender 2.82.7, would be more effective to use actual official release 2.83.1 to avoid possible bugs.


How to create this colorful metal material? I want to create this material, but I cannot create these splotches of colors well enough.

As you can see, this has different colours in it. I can see pink, green, and a little yellow.

This is the result I get:

Indoor HDRI:

Node setup

Download the blend:

lighting and colormanagement, scene scale

before you start creating your shader, make sure to use filmic log encoding in the scenes colormanagement tab. This will switch your colormanagement from sRGB to filmic and will enable additional dynamic range, a natural desaturation of the highlights and a more human like gamma response. It also gives you more opportunities during post-production
roughly recreate the lighting conditions of your reference image. I used two area lamps, two diffuse white planes as room placeholders and a pitch-black scene background/ scene environment. Metal looks best with a very minimalistic lighting setup, an outdoor HDRI creates very unsteady, noisy reflections in comparison
recreate the objects of the reference image, that feature unique topological similarities of the objects you want to apply the shader to. Do not use the monkey head for example, it is an organic shape and doesn't feature the sharp beveled edges and geometrical shapes of the metal parts.
to find the right brightness of my lights, I usually use a diffuse white shader (RGB 0.8) for the ground and increase the strength of the lights right to the point where it almost clips to white. I also added a slight variation between the two area lamps blackbody temperatures.
make sure to get the scale right, for this objects I switched to metric measurements in the scenes settings and assumend them to be about 6-8cm long. Apply the scale of the objects before shading

start setting up the base shader

I used a single principled shader. Since it was implementent in blender, I rarely use a mix of multiple shaders (like you did) anymore, I find it the safest way to create a material, that is physically plausible and has the right energy conservation
set up a orangy/ yellowish basecolor and a basic roughness. Set the metallic value to 1 and specular to zero. All these inputs will be fed with noise (controlled by color ramps) to bring the necessary variation to the color, roughness, metallic and normal inputs of the shader

This is roughly the order, in witch I created the different parts of the shader:

Principled BRDF as base shader, connected to Surface Material Output
set up a color ramp with the basecolors of your metal (the nodes where I add the green tint based on the camera angle (layer weight fed into hue value of HSV node) were all added later on when I refined the material. So are the base color variations, that darken the material on sharp edges and darken the diffuse component of the shader)
create a noise texture and plug in a mapping mapping node and texture coordinates. This mapping node will be your centralized scaling knob and will feed all vector inputs of the noise textures. I split the main noise texture up into R G and B to use these channels independently
create noise textures to control the blend between metallic and diffuse components. The reference image shows some diffuse spots, where the metal is very rough and might partially be covered in dust. For this purpose I used two different noise patterns, one large scale and one small scale noise, that are tonemapped with the help of two color ramps and multiplied ontop of each other. Then I use the resulting noise pattern as a factor to blend between almost pure white (0.99) and light grey (0.9) in a mix node. This is fed into the metallic input, so our surface is 1% - 10% diffuse and 99% - 90% metallic depending on where you look at the surface. It also gets added to the color ramp that controls the surface roughness, to make sure the diffuse parts are more rough than the metallic parts.
the surface details are again a combination of different noise types. Here I used three differently scaled noise textures with very high contrast tonemapping (color ramps again) to create the dents, scratches and microscratches. The mixed noise patterns are connected to the height input of a bump node, you can control its effect on the surface with the strength value. This value is dependent on the scale of your object. When you apply this shader to an object that is too big or small, you'll need to adjust the scale in the main mapping node, as well as the strength of this bump node.

set up a turntable animation
When making complex shaders, it helps to change the directions of the light or the orientation of the object without leaving the node editor. I usually parent the lights to one empty, that rotates 360° around the z-axis. I do the same thing with the objects. Now you can spin your lights and objects toggeling alta and altshifta to rotate objects and lights.
My turntable as an example:

Have a look at the blend to see what is going on in detail and feel free to ask when something isn't clear. This answer has gotten longer than I anticipated, I hope it is understandable.


Rendering camera to image (ImageRender) not working Following the few examples I found on the web, I managed to whip up this code:

import bge

contr = bge.logic.getCurrentController()
scene = bge.logic.getCurrentScene()
obj = contr.owner

texture = None
if "render_to_texture" in obj:
    texture = obj["render_to_texture"]
else:
    camera = scene.objects['Camera']

    # create texture
    matID = bge.texture.materialID(obj, 'MAcam_render_material')
    texture = bge.texture.Texture(obj, matID)

    # create source
    texture.source = bge.texture.ImageRender(scene, camera)
    texture.source.capsize = [640, 480]
    texture.source.background = [255, 255, 255, 255]

    obj["render_to_texture"] = texture

print(texture)                                         # prints <VideoTexture.Texture object at ...>
print(bge.texture.imageToArray(texture.source, 'RGB')) # prints 'None'

# force a refresh
pixels = bytearray(640 * 480 * 4)
texture.source.refresh(pixels, "RGBA")

# print(pixels)                        # just prints an array of zeroes

if(texture.source.valid):              # always 'False'
    print(texture.source.image)
else:
    print("No image available")

And placed this script to be run every few ticks on a plane object with the material 'cam_render_material' on it.
But no matter what, I get empty arrays and None as a result

I've been pounding my head against the desk for the past three hours and heading nowhere. If someone has an hints, they'd be greatly appreciated.

I've added the blender file in question here, if someone wants to check it out

All I needed to do in your blend file was put the viewport in textured mode, then it started working. Other things you may like to consider:

It takes one frame for things to start happening, and because you're printing so many values, you have to wait a while.
the .valid attribute doesn't seem to work for ImageRender (it does for ImageFFMPEG though).
480*480*4 is nearly a million values. So if it looks like you're always getting 0's or 0xff's, you may not be. Try with a smaller image so you can see more of the data values
Consider unwrapping the plane and assigning it a shadeless texture so you can preview what is being displayed (you'll have to run texture.resresh(True) for it to update the texture instead of the buffer).
Consider switching to GLSL mode


Smart Selection Increase like Modo Modo has this nice feature where you can use the up-arrow key to increase the selection in a smart way. Let's say for example I have a face selelection in a line like this: (x is selected, _ is not)

X__X__X____________________

and I hit the up arrow in modo a few times it would recognize the pattern of "select one, skip two and select one face" to give you this.

X__X__X__X__X__X__X__X__X__X

I couldn't find anything in blender that does this. Or is there an addon?

The closet tool I can think of is Checker Diselect.
Select all of the faces/edges/verices you want to affect and go to select->Checker Diselect  (or press the space bar and type checker)

To further refine your selection activate the tools options by pressing F6


Morphing between two different curves or meshes via shapekeys I've imported two .svg's from illustrator to blender that I would like to be able to morph between with shapekeys.
There's a screenshot of the .svg's below.
Blender imports each letter as an individual curve and I've tried to convert these curves to meshes and use the shrinkwrap modifier to morph one letter into another.
This hasn't really yielded any usable results though.
So my only other idea was to export the text from illustrator as a .png and apply it to a square as a texture and then morph that square to a circle via the shrinkwrap modifier. I'd much prefer to do it all with the imported .svg's though, as nothing would pixelate when zoomed in for example. So if anyone has an idea how this could be achieved I'd really appreciate your input!

Cheers folks, thanks.

I see your question has been answered already, and you probably no longer need help with this issue, but you (and others) may want to know that there is a very efficient way to create text like that in your reference image.

(The following instructions assume your text reads from the Top View)

Give the Curve or Text object some thickness

If it is a Text object, this can be done in the Text Context. Look for the Extrude slider.

If it's already a mesh, that's okay too - just Extrude E in Edit Mode. The point of giving it some volume is so that it will register with the Remesh Modifier.

You'll want the Object Origin to be in the center of the text. You can do this while it's a Text object by center-aligning and Y-offsetting the text, or re-set the Origin after converting to a mesh ShiftCtrlAltC.

Convert to Mesh

AltC

Add a Remesh Modifier

We need the text to deform evenly, and this quick retopology method will do just fine.

(Thanks to kaiware-daikon for these settings)

Apply the Remesh Modifier.

Re-flatten it

We don't need it to have volume anymore now that the retopo is done. You can delete the bottom vertices. From the Front View, Box Select B and Delete X.

Then flatten all the remaining verts back to 0 on the Z axis. (Found in the Transform Panel N)

Add an Empty

World Coordinates should be as follows:
X:0
Y:0
Z:-0.5

We will use this in a moment.

Add a Cast Modifier

This Modifier can distort spherically or circularly. Here are the settings:

The End Result

(Animated example)


How to read the contents of a text file? We can define a StringProperty and set its subtype to FILE_PATH in order to select a file:

file_path: StringProperty(
    name = "File Path",
    description = "A path",
    subtype = "FILE_PATH")

Q: How can I get the actual content (text) of the selected file?

pathlib.Path

Recommend for paths, using pathlib module.

For the most part this is a generic python question. The blender specific part is making the path absolute if given as a blender relative path, prefixed with "//"

Relative chosen when setting path property in file browser

import bpy
from pathlib import Path

#path = some_object.filepath # as declared by props
path = "//tmp/foo/bar.txt"  # a blender relative path

f = Path(bpy.path.abspath(path)) # make a path object of abs path

if f.exists():
    print(f.read_text()) # read and print.

The site https://medium.com has some great articles on pathlib and its usage:

https://medium.com/@ageitgey/python-3-quick-tip-the-easy-way-to-deal-with-file-paths-on-windows-mac-and-linux-11a072b58d5f
https://medium.com/@webology/pathlib-is-wonderful-9d25919469d3
https://medium.com/swlh/five-most-useful-pathlib-operations-77f9c96790b3


Material Properties-Material Preview doesnt show anything ( totally black) I start to use blender for a month so i am a beginner. If its a bad question i'm sorry but i couldnt figure out the trouble.
I'm using 2.83a
In Tabs&Panes - Material Properties -the material preview doesnt show any material , its totaly black for everything.
However in rendering everything is working normally.

If someone has any idea how to fix it i will be very happy.

Thanks a lot.

it might be your graphics driver, I recently updated mine and had the same problem but when I went back to a previous version it's fixed


Is there a way to use Textured Solid without getting a Backface Culling effect? I am trying to have a blender file using Blender 2.69 that allows you to look around and also see textures.

Putting the shading on GLSL and turning on Textured Solid make the textures render great, but then an effect almost identical to Backface Culling occurs. I would like to avoid this as it makes everything look really weird and removes some important parts of the model.

Is there a way to avoid the backface culling effect while using Textured solid?

While toggling Textured Solid in Solid view, it will always display culling effect, regardless whether Backface Culling is toggled, I'm not sure if this is made on purpose. So, I think the answer is "no". However, you can always switch to the real Texture View mode in order to turn it off.


What is the most efficient way to finely "slice" layers though objects with python I'm wondering the most efficient way to programatically "slice" though objects to generate a 2D set of faces, vertex loops and derivatives such as face area, and centrons (for more complex objects I'm assuming there would often be multiple faces in a single slice). From this I want to be able to analyse, colorise and potentially modify the original mesh components the slice was generated from.
The easiest way would seem to be if I could to access the faces and vertex loops in the same way I had thought the boolean modifier would (such as the top face shown in the image).
However I looked at the Bool Tools code (object_boolean_tools.py) and it doesn't access mesh data, and I can't find any bpy code which actually does this
At the moment therefore, the best option seems to be to copy the object into a bmesh and slice it with bpy.ops.mesh.bisect - the code for doing this could be extracted from https://github.com/Rylangrayston/Dicer but for this purpose I ideally want it to be 2D (which this isn't quite), and to reference the original mesh (which it doesn't). Also having seen someone elses code run dramatically faster than mine, I'm after advice before starting on such a modification as this already seems likely to be fairly slow and inefficient approach for thin slicing as for the highest resolution I could be looking at wanting 100k slices through a model.
Thanks

A more straight-forward approach.
Not sure this is "most efficient" but it's relatively quick and is a straight forward load mesh into bmesh & single bisect cut per rep
Now it's clearer the result desired, re just the edges of the bisect cuts have re-jigged answers from
Python: Bisect mesh into n parts, without separate 'LOOSE'
How to extract side-view outline (e.g. top view) of a 3D object to 2D surface?
to create objects using the result of the bisect operator.
Notes.

Suprisingly it was quicker to constantly reload the bmesh rather than use recycling the same

For example sake have simply run from (0, 0, -1) to (0, 0, 1) local coordinates to test on sphere / icosphere / cube etc.

See Replace matrix @ vector list comprehensions with something more efficient  re a fast way to convert between spaces and calculate the required limits.

To convert the bmesh to global (or another space) use bm.transform(matrix)

To use a mesh with modifiers and shapes applied use bm.from_object(ob, depsgraph)

Other commented out code re attempts to squeeze out a bit more speed, have AFAIK left those that ran the quickest.

Test script.
import bpy
import bmesh
from mathutils import Vector
from bpy import context

def slicer(ob, start, end, cuts):
    #slices = [] could instead return unlinked objects
    axis = end - start
    dv = axis / cuts
    #axis.normalize()
    mw = ob.matrix_world
    bm0 = bm = bmesh.new()

    # transform to world coords
    # bm.transform(mw)
    # mesh = bpy.data.meshes.new("Slice")

    for i in range(cuts + 1):
        bm.from_mesh(ob.data)
        #bm.from_object(ob, dg) # use modified mesh
        #bm = bm0.copy()
        #bm.transform(mw) # make global
        plane_co = start + i * dv

        cut = bmesh.ops.bisect_plane(
                bm,
                plane_co=plane_co,
                plane_no=axis,
                geom=bm.verts[:] + bm.faces[:] + bm.edges[:],
                clear_inner=True,
                clear_outer=True,
                )["geom_cut"]
        if not cut:
            bm.clear()
            continue
        me = bpy.data.meshes.new(f"Slice{i}")
        # me = mesh.copy()
        bm.to_mesh(me)
        '''
        # only slightly slower
        me.from_pydata(
            [v.co for v in cut if hasattr(v, "co")],
            [(e.verts[0].index, e.verts[1].index) for e in cut if hasattr(e, "verts")],
            []
            )
        '''

        slice = bpy.data.objects.new(f"Slice{i}", me)
        slice.matrix_world = mw
        context.collection.objects.link(slice)
        bm.clear()
        #bm.free() # if using bm = bm0.copy()
    #bm.free()

slicer(
        context.object,
        Vector((0, 0, -1)),
        Vector((0, 0, 1)),
        200)

Timing it.
Using the decorator method
REPS = 10
import time
def time_it(func):
    from builtins import print
    def wrapper(*arg, **kw):
        t1 = time.time()
        for i in range(REPS):
            ret = func(*arg, **kw)
        t2 = time.time()
        print(func.__name__, (t2 - t1))
        return ret
    return wrapper
@time_it
def slicer(....

10 Test runs of 10 reps making 200 cuts in default UV sphere.  Using the command for your script of
slicer(0.01, (0,0,1)) #

which should be 200 cuts on default sphere at origin.
To time the two scripts, after removing prints from yours  to make things relatively equal (as mentioned didn't calculate the bounds of mesh, however as shown in link provided using numpy or other methods, it's hardly rate determining) consistently came up with a speed ratio, this answer to yours of around 8 to 11.
However an issue was yours is making 2500 objects, whereas mine makes 2000 over 10 runs, which will also account for some time differential when fixed.
Not seeing the glitch.

Unfortunately there seems to be a glitch where sometimes layers are
lost or only partially formed - I think it's a bug in the bisect
function, not my code - eg bottom photo: the icosphere is missing the
middle layer if the slice would be at exactly the midline of the
icosphere .

No issue with code above run on icosphere,

Left using 2 cuts (prob should be segments as it's 1 middle cut) and on right with 200 and middle edge ring selected


Python Math Functions Fail In Blender My problem is this: I try and run the script in Blender's text editor and the script fails to math functions, cos() does not work.

When I run the same code in Blender's Python console my pasting it directly, there is no problem

What is the reason / how to get it work from the Text Editor?

Answered by @batFINGER in a comment: You need to either use the math namespace because you've imported it eg math.cos(angle) or to use directly, from math import cos. For convenience sake the math and mathutils methods have been imported for you in the console. from math import * (See banner message).


Script only running on Active Object, not whole Selection? I am trying to make a script to Clear Custom Split Normals on all the objects I have selected. I have copied code from other scripts that run a command on all selected objects. However, this only seems to work on the Active Object, not the rest of the selection. Anyone know why?

import bpy

selected_objects = bpy.context.selected_objects

for selected_object in selected_objects:
    bpy.ops.mesh.customdata_custom_splitnormals_clear()

Is this a problem with my script, or with bpy.ops.mesh.customdata_custom_splitnormals_clear()? I am trying to make this a script because selecting everything an Alt clicking the button for it does not work on all objects either.

Set the active object in the loop, as it appears bpy.ops.mesh.customdata_custom_splitnormals_clear only works on the active object. Not on all selected.

import bpy

context = bpy.context
scene = context.scene

selected_mesh_objects = [o for o in context.selected_objects if o.type == 'MESH']

ao = context.active_object

for o in selected_mesh_objects:
    scene.objects.active = o
    r = bpy.ops.mesh.customdata_custom_splitnormals_clear()
    print(o.name, r)

# change ao back to original
scene.objects.active = ao

Note added print statement with name and operator "result".  A {'FINISHED'} set will indicate object had custom split normals and they have been removed.


Bevel not matching the curve object source I am trying to use the Bevel-Object field in the curve object. However the bevelled curve does not match the referenced curve in the X and Y direction (they do match in the Z direction).

The scales of both curve objects are at 1.00 for all axis. I think the problem might have something to do with the curve radius for bevelling but this is also set to 1.000 and I can only find a mean control value (not a value for the separate axis)

What is the best way to correct the difference accurately?

blend file

Turn the base curve to 2D. That will adjust the corners profile to the bevel object:

2D curves have limitation though: they need to be planar.

If 3D, the corner profile corresponds to the bevel object rotated 45°. So this is matter of choice.


Blender Import with materials (textures) I admit I am a newbie at Blender. (sounds a bit like alcoholic anonymous).

I need to find a suburban scene, (a few buildings, roads, maybe some street signs).

I found this one:

http://tf3dm.com/3d-model/environment-23742.html

Which will do in a pinch.

Download formats are FBX and OBJ (and an MTL file).

But with Blender 2.7, when I import I do not get the textures.

I have gone through the 7 hours of http://www.lynda.com/Blender-tutorials but this one is a bit beyond me. I am probably missing something basic.

What I want is something quick (in terms of my time) and free, since this is a proof of concept.

(Here is what I get with OBJ import, and two hemisphere lights behind the camera).

UPDATE

Ok, I tried again with FBX, textures in same directory.

With the OBJ import, all I had to do was set the VIEWPORT shading to texture.

With the FBX (you can see below) if I set the viewport shading to RENDER it I see the textures, but not with Texture rendering (as I said, I am a newbie). There seems to be a odd difference between the handling of OBJ and FBX. but it is good to get this going.

Unfortunately, this model does not work for me, since I need export to Babylon.js, and that does not work well with this sort of TGA and multi-texture format files (see the firestorm I started in the Babylon.js forum)

http://www.html5gamedevs.com/topic/17001-missing-manifest-from-blend-exporter/

I have downloaded the files you linked to.
I extracted the zip file and (using blender 2.75) used file, import FBX and opened the FBX, hit F12 and no textures.

Closed blender.

Within the zip, there is a .RAR file 'textures.rar'. I extracted that file in the same directory as the FBX and repeated the above process. Textures where showing up when rendering.


Change the size of multiple selected polygons as a post-extrude operation Is there a way to change the size of evenly extruded polygons AFTER performing Extrude/Inset?

It can be very helpful in modeling to be able to work with sets of geometry and yet retain control over the individual elements as if they were being worked on one at a time.

I have tried to use various Pivot settings in combination with Scale but do not have the control over sets of selected faces that will allow me to shape the model the way I'd like to do for mechanical/architectural models.

Step 1: Inset several faces.  This works fine.

Given that the four interior faces are selected;
How can I re-size them in relation to one another without them scaling towards each other with a bias they normally would not have if I were working on them individually?

Step 2: Batch Scale the selected Faces.  Now everything is disproportional.

I have tried changing the Pivot for the Scaling operation but could not get the symmetrical results I was hoping to acheive.

To create something like that initially, use individual inset (II):

Once the geometry is created, you can resize it with Edge slide (GG):

Note that the direction edges are slid is defined by what side the cursor is on when the operator is called, so if you want to make all the edges go in the same direction, make sure you have the cursor off to one side when you press GG.


Version 2.8 or 2.79 to start learning Blender? I`ve been using Cinema 4D for many years and now I´m thinking in migrating to Blender. My question is, which version would be better to start learning? I mean, Blender changed a lot in version 2.8 but it´s still in beta.

It might seem like a waste of time when 2.8 is supposed to come out in early 2019.

Yet...

Both versions are not entirely different, many aspects and concepts will remain the same and there's one major benefit to 2.79:

There's abundant information on it available right now. Look at SE here. Most answers use pre 2.8 as their foundation.

And it's not too helpful to wonder whether something was your fault or a bug.

So I claim that it's easier to get roughly familiar with 2.79 and then 2.8

It's also a good thing to be able to compare the differences. I started with 2.12 and I had to deal with the 2.3 and 2.5 revolution. Not counting the animation overhaul in 2.2x. Now I'll add the 2.8 revolution. Can't shake me anymore. it's 0.1 versions late anyway!!

And as crazy as it sounds: limitations aside, I feel happier opening 2.28 than any later version. I'm glad that I know the past.

Btw, why not learn the basics in both and then decide? 15 hours for A and 15 hours for B. What's the worst that could happen? A broader perspective?


How do I fix the unwrapped version of my knife? The first picture below is the tutorial I´m following and the second one is mine.
Why do they look so different? And how do I fix it?
the tutorial: https://www.youtube.com/watch?v=xPoxqOcUzNQ&list=PL3UWN2F2M2C8-zUjbFlbgtWPQa0NXBsp0&index=6
update:
I unmarked everey seam and did it againg and it worked! I hav no idea what i did wrong but it works now. My guess is that i had marked some seams that you couldn´t see or someting
[]

When you unwrap objects, there is a slider for the "Margin" that you could use. Another things is that even if you cut the same areas as in the tutorial, probably some parts will have a different orientation; that could be fixed manually with rotation
Example:


Obtaining opposing direction rotation I have an object that has been rotated. How can I get its rotation, but in the opposite direction (as a matrix that I can use to multiply some coordinates by)?
bpy.types.Object has an attribute called matrix_world which represents the object's current transformation, including its rotation. I have tried using mathutils.Matrix.invert() and mathutils.Matrix.decompose() to obtain the rotation component of the active object in what I hoped was the opposite direction, and some other methods, none of which worked.
I am currently reading up on linear algebra to discover a solution here (so that I can discover the meaning of matrix inversion, transpose, etc.), but in the mean time any advice is appreciated.

First some information: (skip if tl;dr)
For matrices in general the inverse should actually be what you are looking for, since the inverse of a matrix exactly undoes the transformation of the matrix. And (at least in 3D) for orthonormal matrices (1) like the rotation matrix the inverse is equal to the transposed matrix. Since transposing a matrix is much faster than inverting it, I would use the transposed matrix in this case.

However matrix_world is the so-called World-Matrix, which does not only contain the object's rotation but also its translation and scale. Furthermore it is a matrix that works in 4D homogenuous coordinates, which are often used in computer graphics because they allow you to perform translations and perspective transformations with matrices. You can usualy not work with this matrix directly.

(1) matrices whose column vectors are normalized and orthogonal to each other

The solution:
You were on the right track with decompose. However decompose gives you the rotation as a Quaternion, not as a rotation matrix. But you can invert quaternions as well and use them for your calculation.
If you really need a matrix you can convert the quaternion to a matrix by calling mathutils.Quaternion.to_matrix(). This will give you a 3D matrix which you can invert or transpose to get what you want.

And this is how you can get all that stuff:

o = bpy.context.scene.objects['Cube']  # use your object name here
# calculate the translation, rotation and scale
t, r, s = o.matrix_world.decompose()
# calculate the inverse quaternion
r_inv = r.inverted()
# calculate the rotation matrix from the quaternion
r_mat = r.to_matrix()
# calculate the inverse rotation matrix
r_mat_inv = r_mat.inverted()
# calculate the transposed rotation matrix which is the same as the inverted
r_mat_transposed = t_mat.transposed()

Now take what you need ;)


Duplicating collections in 2.81 not copying everything I'm trying to copy everything in a collection (I don't want them linked)
 called Camera.001 from one scene to another scene (the second scene is in the same blender file).  But I notice that when I duplicate a collection called Camera.001 not everything is duplicated over to the Camera.002 collection. See animated gif below.

The parented text to_see_it_animated_ijk4de_website is not copied over to the Camera.002 collection is this a bug, am I doing something wrong, is there a workaround.

I'm using Blender 2.81 on Ubuntu 18.04 64bit

The parented text object is actually missing even from the .001 collection (it's grayed out).
So it won't get duplicated.

How it happens
When you move parented (child) object into another collection, the parent relationship gets broken.
The child object icon will be grayed out, so you know it's broken.

And broken relationship doesn't get duplicated.

Solution
Find your parented text object, and move it back into the .001 Collection.
Then it will reconnect and will be duplicated with the parent.

Moving a parented object into a different collection breaks the relationship.
Moving it back reconnects it.


How can I compare already imported Fonts with the loaded filepath? I'm working on a part of my plugin easyText.
(http://ranincodes.wix.com/easytext)

I want the import Font part to automaticly check if the Font is already imported. How do I get the name of the selected file (=filebuff)?
If it is, the font should not be imported

This is the part of the code wich is important for it

#Atribute
atr = bpy.types.Scene
atr.font = StringProperty(name = "Text Font", description = "Font of the Text")
atr.filebuff = StringProperty(name = "", description = "Choose Font to Import", subtype="FILE_PATH")

#window
class windowFont (bpy.types.Panel):
    bl_space_type = "VIEW_3D"
    bl_region_type = "TOOLS"
    bl_label = "Import Font"
    bl_category = "easyText"

    def draw(self, context):
        scene = bpy.context.scene
        layout = self.layout
        layout.label("Choose + Import Font")
        col = layout.column(align = True)
        layout.prop(scene, "filebuff")
        layout.operator("load.font", text="Import", icon="LOAD_FACTORY")

#button
class OBJECT_OT_buttonLoad(bpy.types.Operator):
    bl_label = "Load Font"
    bl_idname = "load.font"
    bl_description = "Import the choosen Font"

    def execute(self, context):
        scene = bpy.context.scene
        fontb = scene.filebuff
        bpy.ops.font.open(filepath=fontb, relative_path=False)
        return{'FINISHED'}

UI:

Thank you!

Instead of using the bpy.fonts.open(... operator you can use the load() command for Font Datablocks which has a check_existing property built in, which should do exactly what you want:

bpy.data.fonts.load(filepath=fontb, check_existing=True)

When check_existing is set to True if a font datablock already exists in the blend file from that path then it won't be loaded, otherwise it will.

For more information on why it is generally better avoid bpy.ops commands read here:

Why avoid bpy.ops?


Creating own editor type Is it possible to create your own editor type with python? I know that I can edit the sources of existing ones like the INFO header. But I want to create a complete new one where I can place my operators.

See API docs - Preface:

  The Blender/Python API can’t (yet)...

  Create new space types.

It can only be done in the C code:
http://wiki.blender.org/index.php/Dev:2.6/Source/Tutorials/AddAnEditor

Nonetheless,

you may use draw handlers to overlay an existing editor with python-drawn content. Check out OpenGL Wrapper (bgl) and Font Drawing (blf).
or build blender with the Py-Buttons patch by Campbell Barton to create python-drawn widgets:
http://www.youtube.com/watch?v=mRiTfLpRlRU
(seems to crash if applied to current trunk, use an older revision or wait for a fix)