text:
Can I create a large videogame map in Blender like 9.5 kilometers in size?
I want to create large maps. I considered that single precision floating point has 23 bits for storing value so with millimeter precision of the map and movement 2^23 is the maximum size for each direction times 2 because it can go plus and minus direction.
This is 16 kilometers if I am not wrong about it.
I started modeling so first I wanted a plane which is 9.5 kilometers in size (in both directions). Then I got the plane, then I used scrollwheel to zoom out and got some image artefact, the plane model was disappearing going low. This is maybe because of camera far clipping range, I will check this next.
But in theory can I model such a sized map in Blender? Is the distance precision in millimeters?

Hi :). Should be perfectly possible. The only technical size limit is 202020 kilometers for a single object. https://blender.stackexchange.com/q/174524/78972

Just something to consider: Blender uses single precision floating point variables for coordinates. this means that while you can design locations even on scale of star systems, the precision drops as you move away from world origin. The smallest step of the floating point value from 10 is 0.0000001, so meters away from the world origin the precision is 0.1 µm. The smallest step from 5000 is 0.0005, so 5 km away from world origin the precision drops to 0.5 mm. You can work around that, however.

Have the size be relative, there is no reason to follow the "real" sizes, especially since that can affect floating point precision at the extreme ends of the range. In all honesty, I actually get really irked by someone asking "can I create some model with X [insert real unit here]" because there are no real units, It only makes sense to actually have everything be proportionally accurate, that is having the scale of objects only be accurate relative to each other.

The artifacts you are seeing is probably z-fighting and have probably more to do with your camera's start clipping plane, make sure you increase that as well when you change your far clipping plane, putting it up by a few meters will make a big difference in the amount of z-fighting you're seeing.

You definitely can make a map of that size in Blender, the precision issues are going to be a bigger deal in whatever game engine you are using since that's where the player will feel the jitter in the movement.
Distances in Blender are measured in meters by default.


text:
Can I find out which face is in which vertex groups?
I would like to select a face of a mesh and then find out in which vertex group this face is in.
Is there a way to see that?

In edit mode, select a vertex: you can read its weights assignements in the N properties panel, item tab, vertex weights (visible only if there are any).

great man, thank you!

source: Stack Exchange

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

sort: votes


text:
What is the difference between adding a custom property via the Object Data tab vs the Properties Shelf?
In Blender 2.82a, on Ubuntu Studio 19.10, there would appear to be a place to add custom properties other than under the Object Data tab of the Properties Panel. Under the Tools tab of the Properties Shelf (N-Panel), there is seemingly another place to add them:

I am not clear on what adding them using this other method actually does, because I have found that, for any object currently selected which has had custom properties added via the Object Data tab, those custom properties cease being displayed in the Properties Panel as soon as that object is no longer selected (as one would expect, since the context has changed).
When custom properties are added via the Tools tab of the Properties Shelf, then unselecting the relevant object does not stop the custom properties from being displayed in the corresponding location of the Properties Shelf. Instead they remain visible. I am wondering why this is.
It would appear that adding the custom properties in these two ways is doing something different, and that these two approaches are not merely two different ways to do the same thing.

Custom properties are always associated with a data block they belong to.
The place you add them from determines which datablock they are associated with.
Adding custom properties through the Properties Window will make them associated with the datablock of the currently selected tab.
You can add properties to Objects, so selecting a different one make them "disappear", but you can also add them to Object Data so several instances of the object sharing that data will have the same property.
You can also add them to Materials or Scene, Textures, Particles, among others, regardless of the object they are applied to.
Likewise custom properties added through the Tool tab are associated with another type of datablock, in this case not dependent on selected object, but the current Workspace.
Workspaces are represented by the tabs at the top, an are themselves datablocks that can be linked to or appended, and can bear their own custom properties.

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


text:
Can I add "min" and "max" properties to the "location" property?
In my first Blender script, I'm asking how can I control the slider value with min and max values without using FloatProperty.
box1 = layout.box()
box1.label("Span (Z) profiles positions:")
box1.prop(obj, "location", index = 2, text = "Span")

After looking at the documentation, I do not think there is a built-in option for an object's location (some other Blender values may be, but you could check on Blender's API docs).  It would be best to use a FloatProperty or FloatVectorProperty.  You could use a setter so it updates the object's location whenever the value changes, but that would also require some way to keep track of the object for the property.

Thanks for your answer. I will see in details the blender's API docs. If I found that is possible to do it, it will be more easy for me  because I used FloatPoperty in my program but the values are not apdated ! I always look first for the easiest solution.


text:
Determining the object detected in sensor
Is there a way to determine which object has been detected with the sensor?
For example, if the owner's collisions sensor turns positive, is it possible to get the object collided with?
Something like this:
if own.collisionSensor.positive:
   obj1 = owner of detected collision object
   (print obj1)

Nvm, found the answer:
it would be:
if collision.positive:
        obj1 = collision.hitObjectList[0]


text:
How do I stop Blender 2.8 from creating extra faces when I just want to stretch pre-existing faces?
I'm new to blender so I'm sorry if this is a noob question. Here is an example of what I want to happen when I click and drag the face along the Y axis (represented by the green arrow):
From this:

To this:

However, two extra faces appear when I try to drag along the y-axis:

Here's the face I'm stretching along the Y-axis:

Any help at all on this would be greatly appreciated. If you need more information I'd be happy to give it to you. Thank you all!

so you must have overlapping vertices... before pulling the edges, select all (A) and alt M > Merge By Distance to make sure you've deleted those vertices (check the Operator box on the bottom left of the 3D View to play with the threshold)

HAHA It worked! You're a genius. Thank you so much, this has helped a lot!

since this solved the issue, maybe @moonboots can put that into an answer that OP can accept and close the question? OP: check [tour] to understand what I mean too, instead of adding [SOLVED] to the title.

You must have overlapping vertices. Before pulling the edges, select all (A) and altM > Merge By Distance to make sure you've deleted those vertices (check the Operator box on the bottom left of the 3D view to play with the threshold)


text:
Do I have to re-download my add-ons after Steam automatically updated Blender?
I can't seem to find an answer anywhere online so I thought id ask, I'm still fairly new to blender. But in 2.82 I had things like the hardops add-on, UVpackmaster etc., but when steam automatically updated Blender to v2.83 I lost all my add-ons I had. Is there a way to get them back? or do I have to go re-download all of them?

Related and possibly a duplicate of https://blender.stackexchange.com/questions/166953/is-losing-my-settings-upon-updating-a-problem-with-the-steam-version-of-blender

When Blender starts-up first time, there is an option to copy the settings from the previous version. If you click on it, the add-ons will be copied to the newer version.

That much I did find out, however I didn't know this when I started up the new build and clicked new settings. Is there a way to go back?


text:
How To Create A Normal Map Of Woven Wire Design
I'm creating a microphone model but I'm struggling with the woven metal wire mesh.
This is what I want to create:

The image is from here.
The woven design was easy to model but due to the poly count I really need to convert this to a normal map. The problem is that baking it never gives me good results. Its always very flat and does not look like a woven design anymore, let alone one made of wires.
I've already found something similar here. It's a chainmail but it is close enough. My problem though is that apparently this example here was created with 3Ds Max and not blender.
Given that I've already modeled the woven design, how can I create the normal map of it in blender or if necessary in conjunction with any other free software, so that it actually looks like round wire tubes woven together and not just like a flat grid?

In the link you gave he baked the normals on a flat plane. He didn't do anything fancy, he just added an alpha map. If you look closely on the result he got from crazy bump, you'll see that it's just a flat cylinder with no extra geometry at all.

Yes, I know that. I was trying to do the same but It never looks right. The individual links do not look as round as they do as shown in the link. Maybe there's a trick to make the roundness of the wires sort of "pop out" more?

Well there are always compromises when it comes to optimizing polycounts. But if you want some fine details, you may have to add additional geometry. This is what I did with a single plane with that technique https://imgur.com/a/DlWgy2U If you don't get too close, it would be fine by me.

The models should be very light weight and game ready, so adding this kind of detail just doesn't seem right. As reference I take a HighPoly AAA Rifle, which is supposed to be between 30'000 and 100'000 triangles. For a microphone like this I'd like to stay within 3'000 to 10'000 triangles. At least that's what makes most sense to me.

Model
First of all for mic pattern it is better to model wires over Sphere shape. With plane you will have a hard time to wrap on sphere.
You can start with simple segments in "V" shape ...

Add Array, Cast to Sphere, Skin and Subsurf  modifier

... according to this tutorial.
Normal map

Add a simple Sphere a bit bigger them Wired model and Bake > Normals
Selected to Active ... has to be as 32-bit image otherwise you would not have to enough color info for smooth roundness.

Here I set emissive material to wire model to bake emmision pass as Factor to mix Metal and Black material for holes.

Displacement or Parallax Occlusion Mapping
Silhouette would be flat with just Normal texture. To get more plasticity you can use Parallax Occlusion Mapping that works for Eevee as well ... or use Displacement node in material node tree (also known as Micro-Displacement, heavier for rendering) ...
... in both cases could be enough just to bake AO pass (should be baked Height map or Depth map).

I wasn't exactly going for a round design (It's just the best image I found to show the woven design) but this will work as a reference point. Thanks for the link and the example project, looks great :)

Great if you found it useful in some way ... I will check Parallax thing closer ... it looks incredible  ... I already played with that tech https://blender.stackexchange.com/a/250880/2214, but this one above looks  much better.


text:
Blender rigify problem / automatic weight problem
I am beginner to blender. I am trying to create a rig to my character which I will import to Unity later on. I watched these videos (1, 2) to create a rig but I faced a major issue when I try to pose the character.
The character looks like left leg and right leg are stuck together.
With my limited knowledge and Google skill, I am hard stuck.

As I control right leg or left leg, the opposite leg moves together.

and this is the behavior of the leg that I intended.

Hello and welcome. Please use a title that reflects the content of the question. It should be succinct, unique and identifying, and summarize what the issue is so that users can at a glance broadly understand what your post is about before opening it. Use the [edit] link below your post and avoid any emojis salutations or extraneous text not essential to the question. Remember, your title is the first thing potential visitors will see, and will weight heavily on their decision to open your question, which will directly affect the number of answers you might get.

It looks to me that the Automatic Weights did a poor job on your mesh. Try this https://blender.stackexchange.com/questions/150395/rig-is-moving-other-parts-of-my-mesh-for-no-reason?rq=1 . You may need to manually adjust the vertex weights in vertex paint mode.


text:
Reflection problem on mirror object
I'm working on a project that uses backplates and then I am doing character animation seperately and compositing the animation over the backplate.
When doing the character animation I try and match the lighting and since scenes are indoors I create "lightblockers" that represent the walls, ceiling and floors.  All of these "lightblockers" have Ray Visablity turned off for the camera.
I have a scene that makes it necessary for me to use a large wall mirror so I can reflect the character in the mirror.  My problem is that these"lightblockers walls" are showing up in the mirror. I need only the character/treadmill to reflect in the mirror.
On the mirror object material (full glossy) I tried using a lightpath node but had no luck. (tried nearly every socket: glossy > mixnode Lightpath > to factor of mixnode)

If you look at the rendered image you can see the lightblockers are not shown in the scene but do reflect in the mirror.
Any help would be appreciated.
EDIT:  This is a screengrab after making suggested changes:

How can I make that black area on the mirror transparant?
Instead of showing black, while still keeping the character/treadmill in the reflection.

What nodes are you using for the lightblockers?

You may be able to do some tricks with the is glossy ray light path node to make the walls invisible to the mirror, depending on what the nodes are for the walls.

@ptex  Lightblockers had just a diffused shader and then I had ray visability for the camera turned off for all lightblockers Your trick of disabling ray visability glossy for the lightblocker worked great and now the lightblockers cant be seen in the mirror ... thanks .... but I'm still not there... see next post...I cant add a new image here for some reason.

@cegaton  Thanks for the link ..it helped  I made the change to my world settings (adding lightpath node.... is camera.  It elimanted the world light from the mirror and left me the character/only ... HOWEVER... now I have total black on the mirror xcept the character....  how can I make the black transparant...so I am only left with the character/treadmill.  Im going to post a screen grab onto my original post if possible

@cegatonI I can, but it wont be for a couple hours.... were just leaving

       heres the blend... I had to use a proxy treadmill... hdri image is packed

I haven't seen any replies after i posted the blend file so maybe there just isn't a way to remove the black that is showing in the mirror.  I was able to bring it into my compositor and basically key out the black in the mirror.  It involved a little masking, but seems to work OK.

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


text:
How to make procedural wood material with knots?
Recently I saw new cycles wood shader from CG Cookie, that looks very impressive and I was wondering if it is possible somehow to mix few wave textures to achieve natural looking knots on the wood.
Here are some examples:

My first Attempt:

Currently I am trying to limit the amount of rings on the wave texture, once I figure out how to do that, that texture should morph with the main wave texture and placed randomly across the object. And somehow the knot  should expand from the center of the main wave texture.

Then post your node setup and/or blend file.

I added blend file with my first attempt.

The wood osl shader explained on this page has knots in it, if you don't want to use osl then you may get some inspiration.

I recommend taking a look at this talk from the 2014 blender conference, if you haven't already.

Thanks @gandalf3, this is really good one, I wish there were more examples like that for procedural textures.

@Denis Indeed. It's quite a challenge to make procedural textures which look natural and photo-realistic..

have you tried this?
https://www.youtube.com/watch?v=DcfPH4psKX4

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


text:
How to erase hair from a model to leave it bald?
I'm beginning to practice blender and bought and downloaded a simple body model, but I want to erase the hair to leave it bald, but I don't know what tool to use. Any advice? If it's useful, it looks like the hair was modeled separately because experimenting with some tools I was able to lift some parts and underneath are the ears of the model complete.

HI, welcome, maybe show at least a screenshot of your model "hair" separately modeled, to let others better understand. Isn't enough to select the heir model part and hide or delete it?

You can try pressing H or delete the object or in the outliner there is  list of meshes you have in front of you.


text:
How to Mirror Eye
I am fairly new to Blender, but I can't figure out how to properly mirror my characters eye. I tried joining the eye ball and lid to the body and just applying the mirror modifier, but for some reason that messes with the transparency shader of the cornea. So, I tried setting the origin as the 3D cursor and moving scaling it on the X axis to -1, but for some reason this was the result,

for some reason it messes with the rotation of the eyelids, it doesn't fix if I rotate them 180 degrees on the X axis but for some reason it doesn't do anything?
Thanks in advance

If you scale something by a negative value the normals will get flipped too. So make sure to select your Mesh in Edit Mode and hit Shift + N after you do that.

first, add mirror modifier on the eye and add an empty  .. take empty to the center of both eye (  it's the nose ) and then select or pick the empty in the modifier and choose which axis u want to mirror hope it helps ;)

It works pretty well, but is there anyway to apply the mirror modifier to children too? It only takes the cornea with it, and might be a pain to do  this with the iris, cornea, and both eyelids lol
Edit: Dumb me, I just realized I could use the same empty object for all of the mirrors :P
Thanks, it worked!


text:
Why is Blender separating every face of this model when I unwrap it?
I have a problem with unwrapping this chair model.
I didn't mark any seams, then when I unwrapped the model, blender separated every face of the model as single island on the UV map. The same happened when I marked a seem all - mesh faces are split on the UV map
Any ideas how to unwrap it properly along the seams?

hello, could you please share your file? https://blend-exchange.giantcowfilms.com/

sure ;) https://we.tl/t-K6sRCEgKZ3

If you unwrapped already, there may be an existing UV map that blender thinks is "good enough", Go to the object data tab in the properties panel, and under UV Maps, hit the minus button next to the one that's there (remove it). Then unwrap again,

The faces of your object are all ripped apart, you need to select all, merge by distance, then mark seam and unwrap again.

Thank you. It's working :)


text:
Is it possible to render a mesh without faces?
I have a question about rendering an animation.
For a research project I am trying to animate displacements on a steel frame.
This steel frame has vertices and edges.
In my script I just updated the vertices' x coordinates and then keyframe it.
The animation I get in object mode is really what I wanted to have but if I try to render this animation it doesn't work.
I think it is because of the non defined faces but is there a way to render a mesh which only has vertices and edges? (In object mode I can see the animation.)
(Note that this is not the whole script because the creation of the keyframes and the animation in object mode works.)

Hi. I don't think the animation or scripting part of the question is relevant as the issue seems to be about the rendering and nothing else.

Where can i find the Wire option in Version 2.82 ?

The wire option isn't in 2.8. Have a look at some of the other answers.

If the viewport is good enough, you can disable everything in the overlay but the edges (click on the arrow on the right of the two intersecting discs on the top right corner of the viewport, and uncheck everything), and render your animation directly with "View > "Viewport Render Animation".

@Gorgious If you have another answer, add it over on the duplicate question :)

@RayMairlot Will do a bit later when I have more time :)

@Gorgious thank you. Not the smoothest solution but i think it is okay for me.

See my answer for V2.8 if it helps ? https://blender.stackexchange.com/a/180157/86891


text:
How to switch between textures for different objects?
I have two objects with the same material.
Can I change the texture of just one of them without creating a new material each time?
How can I drive the Offset value of the Image sequence texture node from whithin a single material node tree.

I like what you tried to do with the object data property, but there’s no way to use a different object data property with each object for the same material, unless you did some stuff with attribute storing in geometry nodes, perhaps.

I don’t think there’s any way around having some kind of duplication, either different materials or different mesh data blocks with different UV maps.

instead of a driver use an Attribute node set to object, and plug the output of the attribute into the mix factor of a Mix RGB node. Use 2 different image texture nodes

Does this answer your question? Using independently two values of two object that share the same material. This is a very similar subject and there are different methods in the answers. One of them might be applicable for your problem. @TheLabCat Why is there no way? There are different ways.

@GordonBrinkmann This can be a solution only if there are 2 textures, maximum 4. But what to do if there are a lot of textures and it is unknown how many there are? It will be very inconvenient and very expensive

You can use Pass Index to drive some values of material nodes (in my simple example first Suzanne has index 0, while second has index 1, but you can build some more complicated trees).

A (known) multiple images version:

For unknown number of textures (like an image sequence) you should ask a specific question about how to "read" (and maybe use as new driver) the Object Info value inside the material node tree and/or how to manipulate the offset of the Image sequence texture node from inside the material node tree: I didn't find a way yet.

You could have taken the image from Robin's answer to the duplicate question from two days ago, would have saved you some effort

OK. What to do if there are more than 2 textures?
For example 10. or unknown quantity


text:
From .blend to .mp4
finished a test for an animatic but I don't know how to export it as a .mp4 instead of a .blend, I saw that you have to go in "ouput" but I can't find it can someone help me pls

First of all in the output tab of the properties panel choose your video attributes, like size, FPS, container, destination filder, and so on. Then choose "Render Animation" from the render menu.
If the animation is long it's a good idea to render it as PNG or EXR sequence, and then re-render from images (very fast), because if something goes wrong you don't have to start again from the first frame.


text:
Unlink all connected objects at once
If you have x number of linked objects sharing mesh data, how do you unlink all of them at once?  Right now I am clicking on one object at a time then pressing the number in the name field indicating the number of linked objects.  (EXAMPLE: If you have 62 objects sharing obdata and you want to unlink all of them at once to say apply loc/rot/scale values back to 1 via Ctrl+A, then relink to have them all connected again.) Maybe something like Alt + L, but that doesn't do it :) Thank you.

You can do Shift+L > Object Data to select all visible objects that share the same data and then do U > Object and Data to make the selected objects single users.
Ctrl+L > Object Data can then be used to link the selected objects together again after making any changes.


text:
Array and curve modifiers wont follow path correctly and also gets warped
I am making a model of a city, and in the process of making the roads, I stumbled upon the Array + Curve modifiers not working in order to make a road profile follow the Bezier curves I have created to map where the roads go.
I have tried everything I could find online, from applying the scale and rotation, to aligning the origins of the profile and the path, and also checking the radius value of the curve (as I found online those were of the common causes of error.)
Do you have any idea what it could be? As you can see, I have mapped out plenty of curves and tried with different ones but I am still getting the same kind of error.
Here is my blender file: download

the first problem is, that your plane has a z-rotation -> change that to 0.

After changing that to 0, you will see, that your curve modifier has the wrong axis:

change that to y.

now you get:

now choose your plane, go to edit mode, press R Y 90 -> and you will get:


text:
Making a cylinder with bumps on it

I am trying to make a animated Cilantro character, and need to make the sides of the cilantro bundle by adding bumps. But I don't know how to do it without making individual pieces and stick them onto the cylinder. I also want to make cilantro hair, any advice on that is a bonus. I am new to Blender and just want to learn. I added pictures of the reference and what I am trying to do without making individual lines. I want those lump/bump to be from the cylinder instead on me making 50 duplicates and pasting them into the spots like I did in the picture.

Can you show some references that you have in mind(Pictures)?

don't you want to fake the stripes with a bump or normal map?

You could subdivide the edges of the circles, then select all the long edges, then use checker deselect to select only the redundant long edges produced by the subdivision, and then scale along XY.


text:
How to setup the camera into front view?
Currently I am learning Blender and I have still some problems with the camera setup. I do not really know how to set it to the front view. If I press F12 then I can only see the corner of the picture.

I tried with some hotkeys but it does not work. I am using version 2.77. It is comfortable for me.

Numpad buttons control the orthographic camera positions. 1 = front, 3 = side, 7 = top, 9 = invert whatever view you have (ie top becomes bottom). Set camera to view with  ctrl + alt  + numpad0

Just a tip: You should use latest release instead!


text:
How to scale Faces evenly?
Here I have created a rectangularly-shaped object.

I applied the scale using Ctrl+A and then selected the bottom face.
I press E to extrude, tap enter and then S to scale.
I hold the Shift+Z to scale the face only on the X and Y axis

It doesn't scale evenly (see below):

I have no idea how to get around this problem. Is there a way to scale it evenly, sort of like a reverse inset function?

possible duplicated? http://blender.stackexchange.com/q/52308/19287

Not quite what I was looking for. I want to scale it to be bigger, while keeping the shape even.

When u scale press alt+s

I tried that but I still get the same result.

What you need is the "Inset" tool. This tool has an "Outset" option which works for your situation.

First select the face
Press I then hit Enter
Either press F6 to bring up the operator settings or go to the Tool Shelf (if it's not visible bring it up using T)
Check the Outset option.
In the operator settings, increase the Depth as desired.

Update
If you don't want the height to change, simply set the snap element to "Vertex" and move the face in the z-axis while holding the Ctrl key.

Much closer to what I wanted, but I don't wish for the height from where it is scaled to change.

@EmeraldEelEntertainment You can simply move the extruded face in the z-axis and snap it to one of the vertices

I think I figured it out (at least for this kind of model). I changed the snap settings to increment and made sure that absolute grid alignment was enabled; I then shifted it to where the original extrude point was, then extruded down to add the base.

@EmeraldEelEntertainment, snapping to grid may not always work. It's better to snap to vertex. See the updated answer.

Hm, I could have sworn I used that option. I will take this into account the next time.


text:
Unlinking object
I duplicated some meshes to make a stack of blocks by using AltD. When I apply material for one mesh, it will also be copied to the linked meshes. I know I can use U and then 'Material and tex'. But what will happen when I do the other options:

Object
Object & Data
Object & Data & Material & tex
Object animation

Which one is recommended for making a rigid body simulation with a stack of blocks that will flip over? Thanks :)

related: http://blender.stackexchange.com/questions/2852/how-to-unlink-a-material-only-from-a-linked-object, http://blender.stackexchange.com/questions/1652/how-to-make-multi-user-objects-single-user

you can have different materials for instance if you choose to link the material to the object, not to the data. I'm not sure I understand well the question but for having not linked mesh and material you can also do :
make single user /Object & Data & Material & tex


text:
Make layout panels, close panels
Since these questions are closely related I put them in 1 post, but else I can separate the questions into multiple posts :)
For example I have this layout:

If I move border 3 to the left, it cannot be moved further than border 2. Is there a way to move border 3 such that it 'pushes' border 2 to the left as well? (Same if I want to move border 2 in the direction of border 3)
I would like to close the middle panel by border 2, but I can't because on the left there are 2 panels. How can this be achieved?
Can I make 1 panel at border 1, such that it is next to 3D view panel AND timeline panel? But I can only make a panel that shares space with either the 3D view panel OR the timeline panel (Same for border 4)

This are multiple questions, but I can separate them if I have to. :)

I wrote a proposal for this on the wiki a while back: http://wiki.blender.org/index.php/Dev:Ref/Proposals/UI/Area_Splitting

When did you write it? And did they do something about it? :)

I remember brecht saying something like it would be nice to have and the only reason it doesn't do any of that is because the devs are busy with other projects. So in short, need more devs :P

Sadly, this isn't currently possible in Blender.
Edit: This answer is deprecated, since area management features have been modified since 2.8.


text:
How to make car deform when hits and keeps this form
In my car game I would like to make the metal bend, when it hits a wall. I think of soft body or cloth simulation. How can I achieve that the metal stays solid, but deforms when it hits and keeps this form, like metal? But what I did results in the material being stuck in the obstacle.  Thanks :)
This are the settings:

Plastic is high, so it keeps the deformation
Pull and push are low, because they must stretch and be pushed together. I looked at the tutorial of https://www.youtube.com/watch?v=ofIi4ddHGW0

Hi Faceb :) Your question is to broad and shows no effort, please add what you have tried and what exactly do you want to achieve.

Uhhhhh, you pretty much ask for a Rigid Body Simulation beyond the yield strength of a material.. that isn't even a "solved" problem in material science afaik, so if you find a plugin for it, PM me. Until then I think you have to find a workaround. Maybe substitute the original with predefined damaged objects when they match close enough


text:
New Import script: creating UV coordinates
I'm writing a new import script from DSON (DAZ Studio json-based format) to Blender. I've got the vertexes and faces in, but I'm having difficulty generating sensible UVs.
My Problem
I can't seem to get the UV faces (correctly) into my object in Blender. I've been trying to follow the example of the Wavefront OBJ importer code but I don't understand what I'm reading and my results reflect that. I keep loosing some of my UV points, and whats left are being connected by a nonsensical zigzagging mess.
Complicating things is that I have a severe case of perl brain so I'm sure my data structures make real Python programmers cry.
What I have:

A datastructure called uvs that wrangles all the UV information from
the file. A given object in DSON can have one-or-many UV sets;
usually only one is used at a time although obviously Blender can do
fancier things.
uvs is a dictionary of named UV sets (the name of the
set is the key to uvs) Each UV set is a dictionary with two keys

one is 'textureCoord' and is an ordered list of tuples-pairs of the UV co-ordinates in the 0..1 format Blender uses.
the other is 'uvFace' and is an ordered list of tuples-tris or -quads, each representing one face of the UV map. Each tuple is a list of indexes referring to the co-ordinates from 'textureCoord' used to build that face.

Order for both 'textureCoord' and 'uvFace' comes from the original DSON file and matches the order in [the OBJ][1] file. Same with the vertexes and faces in my data structure and the OBJ file, therefore I'm feeling pretty safe in assuming the geometry face order corresponds 1:1 with the UV face order.
Since I think I'm messing up terminology, I'll explain what I have with an example.

A 1m cube exported from Studio has 8 vertexes, and six faces (all quads).
It is unwrapped with what looks like a Lightwave style unwrap algorithm, giving me 6 UV faces packed into the UV map into a rectangular space - three per row, two rows, with no border padding between islands.
I get a list of 8 geometry vertexes, and 6 geometry faces (referring to 4 indexes into the list of geometry vertexes).
I get 18 UV vertexes, and 6 UV faces (referring to 4 indexes into the list of UV vertexes).

Given information organized in this way, what seems to be the best way to go about importing my UVs and getting them associated with the geometry correctly?
What I have found so far and what I've tried so far
Found: No real tutorials on how the UV API works. :( I would LOVE it if there's a tutorial out there that walks you through the Python API and UV creation, like I've found for geometry creation, but I can't seem to find something like that.
I read Importing UV coordinates and the linked article on BA and didn't find it particularly illuminating. I certainly thought I was building my mesh via polygon, when I tried implementing the BA article code I get KeyValue exceptions that seem related to the index of the loop??
[1]I've validated that I'm untangling the DSON data correctly by dumping my face lists to the console while I try to import, and comparing with an OBJ export from DAZ Studio. I've confirmed the OBJ imports fine into Blender, so I know Studio is producing consistent output. The UV co-ordinates and UV-face lists/orders match up, so that seems good...
I can create a new tessfaces_uv_textures and name it (and also a new uv_textures); I'm confused as to what the difference between the two is. I've tried assigning values to the tessface_uv_textures[mapindex].data.uvN properties and get nonsense; I periodically even loose geometry faces by doing this, which seems very odd.
If I comment out my sub that's building the UVs, my geometry faces come back, so I have isolated whatever THAT problem is to the way I was (failing) to handle UVs.
I've also checked out https://blender.stackexchange.com/questions/6053/simple-uv-mapping-example-in-blender-2-63-python and from there looked at the io_import_images_as_planes.py script but it is... utterly unhelpful. It creates an UV texture and otherwise seems to rely on the image plane being exactly one quad and the default UV map being exactly a square the shape of the image space to do its work automatically. I need to import an existing UV map, not set up the bare bones of one.

Is there one UV coordinate for every vertex, or for every vertex in a face in your source data? Vertices are shared in Blender, but to allow "hard edges" for textures/UVs, there is per-face data stored in so called loops. UVs are per loop, so the indices are not equal to vertex indices!

Since I think I'm messing up terminology, I'll explain what I have with an example. A 1m cube exported from Studio has 8 vertexes, and six faces (all quads). It is unwrapped with what looks like a Lightwave style unwrap algorithm, giving me 6 UV faces packed into the UV map with no borders. I get a list of 8 geometry vertexes, 6 geometry faces (Referring to 4 indexes into the list of geometry vertexes), 6 UV faces (referring to 4 indexes into the list of UV vertexes), and 18 UV vertexes.

18 UVs seems pretty odd, you would have 24 loops / UVs in Blender. Looks like some are reused (= more than one face that references such a UV vertex). You'll need to duplicate the shared UV coordinates and map them properly to Blender loop indices.

Ah-ha! OK, that's definitely part of the problem then. I end up with 18 UV co-ordinates in the OBJ that I export from Studio as well, so I suppose it'll the same contortions as the OBJ importer. Unfortunately I still haven't deciphered what's going on in there.

I'm back at home with my files and I'm not seeing duplication. I'm now several times confused? My geometry faces: (0, 1, 3, 2),
(4, 5, 7, 6),
(5, 0, 2, 7),
(1, 4, 6, 3),
(2, 3, 6, 7),
(1, 0, 5, 4)
My texture faces: (0, 1, 3, 2),
(4, 5, 7, 6),
(8, 9, 10, 11),
(1, 4, 6, 3),
(2, 3, 12, 13),
(14, 15, 16, 17) and my texture coordinates: (0, 0),
(0.33, 0),
(0, 0.5),
(0.33, 0.5),
(0.66, 0),
(0.99, 0),
(0.66, 0.5),
(0.99, 0.5),
(0.66, 0.5),
(0.99, 0.5),
(0.99, 1),
(0.66, 1),
(0.33, 1),
(0, 1),
(0.33, 0.5),
(0.66, 0.5),
(0.66, 1),
(0.33, 1)

Is there something I can read up on about "loops"? All I can find is stuff like edge loops and quad loops when modeling, and that seems to have nothing to do with what we're talking about here. I especially need information on what the relationship between faces and loops and UVs are, because I'm especially not understanding your comment about hard edges on faces being why the data is stored this way.

Look at the 4th and 5th texture face: (1, 4, 6, 3), (2, 3, 12, 13) - the first four numbers reference a texture coordinate that was used before. Pseudo code how to de-duplicate / map: for tex_face in tex_faces: uv = tex_coords[tex_face]. This page about the BMesh modelling system goes into the details, but most of it isn't relevant for python scripting.

let us continue this discussion in chat


text:
Get Location of an empty with shrinkwarp constraint
I like to read the location values of an empty by a phyton script.
The empty has a shrinkwarp constraint an is projected to an plane (ground).
With >>>
bpy.data.objects['empty_left.005'].location

i get:
Vector((3.6352062225341797, 5.1430134773254395, 0.0))

but the z-value is the origin value and not the projection value.
If i use the z-value as a variable for a driver, the correct value is used:

Could you upload your setup to pasteall.org/blend?

@user2488 just apply the visual transform before reading the values and you will get what you want

the empty follow a plane and change its z-value dynamicly, so i cannot apply the transformation! But the answer from pink vertex works fine!

You can get the location from the world matrix:
empty.matrix_world.translation

you need to apply the visual transform 'which apply the constraint transform' to get the actual location of your object :
import bpy
ob = bpy.data.objects['Empty']
bpy.context.scene.objects.active = ob
bpy.ops.object.visual_transform_apply()
print(ob.location)


text:
Python: Find a point on a uneven plane where the distance from an object is exactly a given value!
I like to identify a point (Global Vector) on a plane where the air-line distance to an object is f.e. exactly 1.5 bu. The point should be exactly on a line between the object and a target object.
To demonstrate the problem i have attached a picture. The left Empty should be the origin Object and the right one the target Object. As i said the image is only for demonstration purposes. The problem should be solved only in python and the locations of both Empties are Vector-Variables and not existing Objects.

UPDATE:
I found an answer by myself
def pos_target():
    start = bpy.data.objects["Empty"].matrix_world.translation.copy()
    actualpos = start.copy()
    end = bpy.data.objects["Empty2"].matrix_world.translation.copy()
    vec = end - start
    distance = 0.0
    max_distance = 1.5
    target = bpy.data.objects['Plane']
    while distance < max_distance:
        actualpos = actualpos + (1/10 * vec)
        raystart = actualpos.copy()
        rayend = raystart.copy()
        raystart[2]= 10.0
        rayend[2] = -10.0
        location = target.ray_cast(start=raystart,end=rayend)[0]
        distance = (actualpos - start).length
    bpy.data.objects["point"].location = location

It's not the exact point i was looking for but for my problem it's good enough.
But is there a better Answer, maybe without a while-loop?

take a look at the Mathutils classes especially Vector has useful methods. Try write some code we can help if you really get stuck - and obj.ray_cast

No. I have a given distance. You could imaginate the distance as radius of an circle around Empty A. I'm searching the coordinate of the intersection of the fictive circle and the the plane.

Okay, i made it not totaly clear. The intersection has to be between empty 1 and empty 2. The red line in my picture shows all possible points and i'm searching the point that has an 1.5bu air-line distance from empty A.

I found a solution. Maybe there's a better one?


text:
Python access to Skin Modifier data - again
I am trying to access skin modifier vertices data. An older solution does not work in my Blender 2.75 / 2.76:
print('has skin=', bool(context.active_object.modifiers['Skin']))
data = context.active_object.data
print(data)
vert = data.skin_vertices
print('skin_vertices=', vert)
v0d = data.skin_vertices[0]
print('skin_vertices[0]=', v0d)
v0d_data = v0d.data
print('skin_vertices_data=', v0d_data)
print('--------loop--------')
for v in v0d_data:
    print('skin_vertex=', v)

That returns:
has skin= True
bpy_struct, Mesh("Skin")
skin_vertices= bpy_collection[1], Mesh.skin_vertices
skin_vertices[0]= bpy_struct, MeshSkinVertexLayer("")
skin_vertices_data= bpy_collection[4], MeshSkinVertexLayer.data
--------loop--------

According to python api skin_vertices return MeshSkinVertexLayer not MeshSkinVertex, what we see in print data.
Bmesh also has a some skin data BMesh.verts.layers.skin, but it doesn't return any useful data.
Is there any way to access skin data?

do it in Object mode when using obj.data.skin_vertices[0].data directly. Edit Mode will not output anything

Thanks, its work. Mesh in EDIT mode return skin data and might be modified.

Why not generate a new mesh with modifiers applied via: bpy.context.object.to_mesh( bpy.context.scene, True, 'RENDER' )?

The original question you link to mentions this in the first line, but doesn't make a point to clarify why the Object/Edit mode switch is important.
Non BMesh
When using obj.data.skin_vertices[0].data, the Skin Modifier data will show the correct current values only when the object is put back in Object Mode. The same is also true for checking other information of the mesh, like vertex.select.
BMesh
It may be possible to get this skin information while still in Edit Mode using bm = bmesh.from_edit_mesh(obj.data) but I have not been able to find an obvious way. If it is possible someone will no doubt offer a suggestion.


text:
Issue with rendering a simple low poly scene. Render is warped and deformed
Just re-learning and created a low poly scene to render. For some reason, it is coming out pretty warped and deformed. My books array not appearing correctly. Tv screen is half showing. wall and lighting seems really bad. and the blinds too.
I am on a 2017 macbook pro with Radeon Pro 560 4 GB & Intel HD Graphics 630 1536 MB. It has a quad core as well..
Here is the image:

Here is the project file:
https://drive.google.com/file/d/1-lSe9MND1Tl0ez3lgN-F91UytQ8HBnHY/view?usp=sharing

Hi. In future, please use the built-in uploader when adding images. See: https://meta.stackexchange.com/questions/75491/how-to-upload-an-image-to-a-post . Thanks.

You have a Subdivision Surface Modifier attached to your room, with the number of subdivisions set to 0 for the preview, but 2 for the render. If you want the render to be the same as the preview, turn down the number of subdivisions for the render. However, if 0 subdivisions is what you like the look of, you might not need the modifier at all, or if you still need the "floor" subdivided, consider using "Simple", as opposed to "Catmull-Clark".

Thanks so much, Christopher!! Worked, appreciate it. I must have added that modifier by mistake. I'm not even sure what subdivisions are for or why I would want them for my wall or floor... Thanks so much though, I thought it may have been an issue with my CPU rendering.

Subdivision Surface modifier is used to add virtual faces to a low-poly object in order to make it look smoother, as the faces are only virtual the advantage is that you can keep your object low-poly, which makes it easier to work with and keep your file lighter


text:
How can I get Blender to render the 3D view instead of the what's in the VSE?
I added a video sequencer/preview as reference for the animation I am doing, but now when I render, it renders from the sequencer rather than my 3D camera.
How can I fix this?

In the Properties panel > Output > Post Processing, disable the Sequencer option.


text:
Installed add ons are not visible as separate tabs in sidebar
I have a problem with addons in all 2.8x blender versions (in 2.79 version it works propertly). All of addons are NOT visible in the right sidebar, as separate tabs. There are only visible in option "Tools"->Workspace (also right sidebar). You can select them, but it doesn't change anything because there is no possibility to use it (e.x TextFX Addon). Or maybe I don't know how to use it?... I tried to find any tutorial, but in every tutorial there is this same situation - everybody (after installing addons and activated it) have them visible in the right sidebar as separate tab. What do I do wrong? Is it preferences case? Can you help?

Hello :). Both Rigify and LoopTools tabs only show up in Edit mode. Are you in Edit mode?

Hello :) You're right. They're visible in edit mode! Thanks :) But I still can't fix Text FX Addon problem. :( I can't find it anywhere. BTW, Is there possibility to make all those addons visible as separate tabs? It's a little strange, that all users have it (especially in older 2.8x versions), and in my case it's available in this way... Espaecially, if I want to use another addons in the future...


text:
Can I connect a Diffuse BSFD to the Principled BSDF's roughness input?
I have a principled bsdf.
Under roughness, I have maps that I would like to connect to it. As I'm adding a normal map to my roughness map, I'm thinking of putting the map through a diffuse bsdf. Is it possible to connect the diffuse bsdf to the principled bsdf under roughness? I can't figure out how as the node lines turn red which I guess means it's invalid.

No you can't connect a shader's output to a the input of another shader. Different kind inputs should not be mixed. Green goes with green, purple with purple, Yellow and Grey can be mixed if you know what you are doing.
Refer to these links to understand what each color socket is for:
What is the meaning of the color of the node sockets in the node editor?
and
Cycles - (Shader) Nodes - inputs outputs - What are the exact data types?
Normal maps and roughness maps are different kind of information and each of them can be connected to their corresponding input.
Normal map would go to the normal input socket.
Roughness to roughness input on the same principled BDSF node.

thank you for your reply!
i understand now that this is not the way to do it.

@shavonne If the answer heped, please mark it as accepted ✓ so it can help others :).


text:
Where to download older Blender versions? Namely Blender 2.80
Where to download Blender 2.80?
I downloaded Blender 2.82a but it always crashes.
So I'd like to try 2.80 but I can't find it on the official Blender site.

If you're downgrading due to crashes, perhaps you'd prefer 2.79b instead. It's the last stable release before the UI change.

Here you have all Blender versions
https://download.blender.org/release/

Which can actually be found through the official site. Download => Previous Versions => All Previous Versions. The download link in that box goes to the site in this answer.


text:
How do I make an object partially transparent in the 3D view?
So, I want to see my reference through the object in viewport, and I'm trying to achieve that by turning down the Alpha, but when I turn it down lower than 1 it disappears right away instead of fading. Does anyone have any idea what could be causing this?

@ChristopherBennett Thank you!

In the bottom right area of your top photo, there are 2 settings visible: Blend Mode and Shadow mode, both are defaulted to opaque. Set Blend Mode to alpha-hashed, alpha-clip, or alpha blend. The other controls shadows cast by the transparency - you may or may not need it. You still can control the degree of transparency using the alpha value.
Alternatively, you could always enable x-ray mode at the top next to the viewport preview selection buttons.


text:
Scaling objects with data modification
I am fairly new to blender and am wondering how does one scale the objects in blender via python script.
Currently I am simply changing the scale of the object via bpy.data.objects[NAME].scale
however, this is not what I want to do as it only visually shrink the object.
I also tried to change the length of each bone individually, however, even though the length of the bone changed, the head and tail of the bone did not change. Also something worth mentioning, I am working with a hand. This ended up giving me a hand with tiny bones but not connected due to the bone's head remaining the same.
I would like the bones in the armature object to actually shrink/grow as well, since I am exporting this object later as BVH and would like to preserve the scaling.
Thanks

how are "the bones in the object" ? is the object an armature or a mesh parented to an armature ?

its just an armature, no mesh involved.

loop through bones and scale one by one

i know how to loop through the bones, but to scale the bone, what do you call? bpy.ops.transform.resize?

this is simple script for scaling all bones in the active armature :
import bpy
ob = bpy.context.object
bpy.ops.object.mode_set(mode='POSE')

for bone in ob.pose.bones:
     if not bone.parent : # since children inherit scale no need to scale them
        bone.scale *=0.5

bpy.ops.object.mode_set(mode='OBJECT')

to remove scale inheritence  :
for bone in ob.data.bones:
        if bone.parent :
            bone.use_inherit_scale = False

#scale all bones
bpy.ops.object.mode_set(mode='POSE')
for bone in ob.pose.bones:
        bone.scale *=0.5
bpy.ops.object.mode_set(mode='OBJECT')

scaling in edit mode :
import mathutils
bpy.ops.object.mode_set(mode='EDIT')

mat = mathutils.Matrix.Scale(0.5, 3)

for bone in ob.data.edit_bones:
        bone.transform(mat,  scale = True, roll = False)

bpy.ops.object.mode_set(mode='OBJECT')

This changes the hand visually, but when i get an individual bone's  length it's still the same as before without the scale. Am i doing something wrong?

the children bones are in the local space of there parent , so if the parent is scaled by half the world of the child is scaled by half , it's length is the same but visually it's half what it was

if you want you can disable Inherit_scale in the bone tab and remove if not bone.parent to get what you want

with this script, if I were to export the object as BVH is the scaling preserved?

sorry i have no experience with BVH exporting : (  , you can try the second method and export a simple armature

when u said disable inherit_scale in the bone tab, how does one do this in python. I am currently doing everything via python, so i cant really touch any of the UI

@jim is the scale preserved after exporting ?

one thing to note though, after scaling with the script above, if I were to enter edit mode, the hand's size is back to original.

yes that's normal , also you should know blender provide separate access to edit bones and pose bones ( hence the use of mode_set('pose') ) , edit mode is the rest position the the pose mode will aplly its transformation on to generate the pose

oh, no wonder. But shouldnt I be manipulating the edit bones instead of pose bones? sorry for sounding dumb...

I assumed this was for animation !

It has animation, so If i were to just change the edit bones, the scaling should still be preserved even during animation no? Also if I simply change the length of each bone as you have done in your answer, the head and tail of the bone doesnt change, so what i have is a hand with tiny bones that arent connected

yes bones through all the animation will be scaled

OK will change to use an operator instead

I appreciate your patience with my stupidity very much. Thank you

@jim you are welcome : ) , try the update and see if it works

Yup, thank you very much for the help. I was actually looking at the transform() function for the bones earlier. But when i was testing it, it kept on giving me bad matrix error. Glad to see how it actually works. :) Sorry i cant upvote the answer, not enough rep yet :/

glad i cold help

For BVH export using the Python API, there is a global_scale parameter that you can apply with some scaling factor to the export function. See API doc.


text:
TIFF Image Problem
I recently downloaded a pack of TIFF mountain brushes for usage in Blender so I could sculpt my own terrain to look more realistic. The brushes can be downloaded here: https://www.youtube.com/watch?v=40glxZCyPeY
I brought one of the TIFF textures in and began using an anchored sculpt brush to place them down onto the subdivided mesh I prepared. However I noticed that the actual brushes were green, unlike a white colour list most brush alphas you'd expect. The brush strength is incredibly weak; even when turned up to 1.000 strength it is very weak and does not make much of a difference (see below). Notice how the texture is green in colour.

I thought I could go to GIMP and edit the images to be white, but when I loaded the TIFF file into GIMP the image is invisible, leaving only the dimensions of the image and nothing else. Perhaps I shouldn't be asking a question like this here but I am stumped. How can I make the images black and white without them turning invisible?
UPDATE: Tried out a method suggested to me. It makes the texture more usable but gives off these ugly rigid shapes on the sides of the mountain that don't look very clean.

The problem is that they are vector displacement maps, not normal black/white displacement maps. Currently, Blender does not support vector displacement maps as sculpting brushes. You can, however, convert them with the compositor to black/white images, and then use them that way.
Normally, doing this would lose some of the functionality of the textures, since vector displacement textures displace the mesh along the mesh normal (the Y component, or the green part of the texture) and perpendicular to the normal (the X and Z components, or the red and blue parts of the texture). However, since these texture are just green, they only displace along the mesh normal and we won't lose anything by converting them to black/white images.
So, to convert them to usable images, open the Compositor, check Use Nodes, and delete the Render Layers node. Add an Image node (Shift + A > Input > Image) and click Open. Navigate to the texture you want to convert and load it in.
In the Render tab of the Properties panel, set the resolution to the resolution of the image you are converting (in this case, 1024x1024), and crank the % up to 100
Now, we need to separate the Green channel from the rest of the image. Add a Separate RGBA node (Shift + A > Converter > Separate RGBA) and plug the Image node into the Separate RGBA node. Connect the G output to the Composite node.
We have now isolated the green channel, but the image is still really dark. To fix that, stick a Math node (Shift + A > Converter > Math) in between the Composite and Separate RGBA nodes. Since the highest value that any of them goes is about 0.35, then set the Math node to Multiply and set the second input to 2.75.
That should be it. Just hit Render and use that as the new sculpt texture. The process can be repeated for the other textures.

Edit: The "stripy" sculpts seen in the edit to the question are caused by color banding. To fix this, just change the Color Depth from 8-bit to 16-bit in the Output panel of the Render settings:

Thank you for the detailed comment. I tried this method out but I am having another issue. See the updated question for the image.

@EmeraldEelEntertainment I just added an edit that will fix that problem.


text:
Accidentally Painting Normal Map
I recently baked a normal map from a high poly to a low poly, and then set up the normal map in the Material tab. I then created a new texture to colour the model and added another texture slot on the same material with this texture in mind.
However something peculiar happened. When I tried to paint a colour on the diffuse map straight on the model it seemingly painted on the normal map I baked earlier. I think it works by using black as the deepest and white as the highest points of detail:

When I try to paint on the diffuse texture via the UV editor I have no problems, but it paints on the normal map texture in the default view. I am a bit confused because:

I don't know how I got to painting on the normal map; it was rather unexpected.
I don't know how to change to paint of the diffuse texture.

I wish to know how to get back to painting the diffuse, and how to enable normal map painting whenever I please; had I known sooner I'd be using it more often!

When painting, you need to choose which image is active by selecting it in the Slots tab of the toolbar. Normal maps work on colors that represent xyz axis for normals, and bump maps use black to white gradient for in and out displacements. Reordering the textures in the Properties texture stack won't affect it unless both are set to 'color' and then the one on the bottom of the stack blocks out the one on the top of the stack.

Thank you for clarifying. I had no idea about bump maps. Are they the same as Normal Maps except they deal with different color data?

A bump map works similar to a normal map, but more like a displacement map. Normal maps are usually baked from geometry and then applied to lower resolution mesh, but painting them is difficult because they use specific colors to affect the x/y/z axis. Blender materials confuse this by saying a bump map affects 'normal' when it is just bump. Normal maps are mush more info.

I don't know if this is the best answer but it got things working for me, so I can't complain.
To paint on the diffuse map I selected and move it to the top by pressing the up arrow on the right, making sure it was checked too. I unchecked the texture below too. This can be done vice versa with the normal map, as the texture is set to only handle UVs and not colour. :)


text:
Using Blender for 2D Art
I wanted to post this question on blenderartist.org but, for some bizarre reason, the Compositing and Post Processing parts of the forum do not allow you to create threads in them. How inconvenient.
Anyhow I have seen a few videos every now and then on YouTube where an artist does a quick sculpt in ZBrush, does a quick render and throw it into Photoshop. There are two ways this processing works:

The model has some materials applied and is painted over, using the base as a colour palette and perspective guide.
It has a basic matcap applied and the model is used as a reference for drawing/tracing over, as well as being used for proportions and perspective.

I don't own ZBrush or Photoshop; instead I use Blender and GIMP, which are free opensource alternatives. Is there a "right" way of doing this same process except with the two opensource softwares? I don't believe this kind of workflow has been covered before so I apologize if I have not articulated my question very well.
My reason for asking this question is so that I can use Blender to help compose a 3d scene for 2D artwork.
EDIT: Here's a video example of what I'm aiming for: https://www.youtube.com/watch?v=iQBozQf0qyw . But not just scenes of course; characters also.

Can you link an example of what you've liked from youtube?

You can do both techniques you list, as well as you can render out to the same camera size as your intended project and then bring that image in as a mask image in texture paint tool, and then you can paint it in with an easy inversion for concentrating on highlights or shadows. You can also render with a few different materials from the same camera position and then stencil between the images in the texture stack with procedural texture brushes, etc. My thread on all things I have learned is here: https://blenderartists.org/forum/showthread.php?291907-Craig-s-2d-painting-in-Blender&highlight=


text:
Finding closest distance from point to mesh in BGE
In BGE, I have a simple mesh, say, a cube that has been subdivided a few times to give it more than 8 vertices, like so:

What I'd like to do, generically speaking, is find the shortest distance from the surface, or alternately the bounding box, of that mesh a given location.
To be more specific, I want to find the distance from the camera (player) to the mesh. I would then pass that information into a text field on a HUD (which I already know how to do). Think of it like a range-finder, where the player always sees the distance from him/herself to the target object. I've found a few methods that work using the object's origin, but that doesn't work for me. I need the distance to the closest vertex on the object's mesh. Or alternately, at least the closest point on the object's bounding box.
I know how to get the camera's current location with object.worldPosition. I've tested that successfully.
Here's what else I've found so far, none of which works for me:

closest_point_on_mesh, an object property in BPY. This seems like it would work perfectly - I'd find the closest point, and find the distance from that point to the camera's location. Except that it's only for BPY, which doesn't help me for BGE.
Ray casting in BGE, from this similar object property list for BGE. I'm not quite understanding how ray casting works here or how I would use it to find the nearest point to my origin point (the camera location). Note, I already know what mesh I want to "hit" (the cube), I just need to find the closest vertex or closest point on its surface.
This StackExchange answer that relates to BPY. Again, I need a BGE-workable solution.
This other StackExchange answer that is in BGE, but it is only for the distance between two objects' origins. I need the distance from one point, to the closest point on the object. Not the origin-to-origin distance.

Finally, here's what I've tried to implement. Since object.closest_point_on_mesh from the first bullet above seems to be the closest to what I want, I decided why not try it in BGE and see if it works after all. It didn't.
import bge
from math import sqrt

#There's a bunch of other code in here that I won't repeat,
#but one of them is getHUDfield(), which retrieves the text
#objects in the HUD scene so that their text can be updated

def RangeUpdate():
    #Have this actuated by "Always" and reside on the camera
    #Find camera location
    cam_loc = bge.logic.getCurrentController().owner.worldPosition
    print(cam_loc) #for debugging - this works, successfully gives me the cam's location in the console
    #Find the cube object and find the closest point on its mesh
    objects = bge.logic.getCurrentScene().objects
    bounding_cube = objects["Cube_00"]
    loc, norm, idx = bounding_cube.closest_point_on_mesh(cam_loc)
    #^^^Right now the problem is here: closest_point_on_mesh might not work in BGE?

    #Find the distance between cam's location and this location
    dist = sqrt((loc[0]-cam_loc[0])**2 + (loc[1]-cam_loc[1])**2 + (loc[2]-cam_loc[2])**2)

    #Display it on the HUDfield called RangeLabel
    allhudfields = getHUDfield()
    hudfield = allhudfields["RangeLabel"]
    hudfield["Text"] = str(dist) + " blender units"

The code fails at bounding_cube.closest_point_on_mesh(cam_loc). The console output says AttributeError: 'KX_GameObject' object has no attribute 'closest_point_on_mesh' For the curious or skeptical, the part where it updates the hud field's text DOES work (if I feed it a dummy value). Clearly the failure is in finding the point on the mesh closest to the given location.
So does anyone know either how I can do something similar to calling the property closest_point_on_mesh, but in BGE instead of BPY? Or, is there a totally different method or a work-around that works in BGE? To reiterate, my objective is to find the shortest possible distance from an arbitrary point (the camera's location), to the surface of a specified object/mesh (or at least the nearest vertex on the mesh, or the closest point on its bounding box).

If it's just the distance to the Bound Box, does not require any complex function for this.
I do not usually use bge, but you can take advantage of this code to get the nearest point of a Bound_Box.
#bound.min: smaller coordinates x, y, z of Bound Box
#bound.max: greater coordinates x, y, z of Bound Box
#co coordinate of the point to test the nearest
from math import sqrt
def find_nearest_t_AABB(bound, co):
    nearest = [0.,0.,0.]
    dist = 0.
    for i in range(3):
        if (bounds.min[i] > co[i]):
            nearest[i] = bounds.min[i]
        elif (bounds.max[i] < co[i]):
            nearest[i] = bounds.max[i]
        else:
            nearest[i] = co[i]

        dist += (co[i] - nearest[i])**2
    return sqrt(dist), nearest

This is a nice work-around that hadn't occurred to me, thanks! It should be good enough for my needs and probably faster than checking every mesh point (though I'm still curious about BluePrintRandom's method for learning's sake). I'll mark it as the answer once I have a chance to test and confirm that it works for this case.

To get the closest vertex to a mesh you can build a kdtree and check a point to get the closest vertex, but be aware, any time the object moves you will need to build a new tree.

I'll have to look into how to build a kdtree. Do you mean I would iterate through every point and see which is the closest?

A kd tree you itterate to build, its in mathutils, and when you request the closest point, it spits it out, much faster then itterating with python. Be aware when you build the tree you have to translate the vertices to worldspace.

or * translate your point to check into localspace

authors: Иван Александров


text:
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)

Thank you, this worked. FYI, I did it slightly differently: In logic bricks, the timer > 0 condition makes the text invisible. I wanted to do the actual "make object visible and reset timer to -3 s" triggering in Python since I'm going to be doing a lot more similar object-lingering later, so this is how I did the Python component:
def lingerObject(obj,lingertime): //     obj.visible = True  //     obj['lingerTimer'] = -lingertime


text:
How to check if two meshes intersect in python with BVH Tree?
In addition to this discussion:
How to check if two meshes intersect in python?
I would like to know if the new mathutils.bvhtree module may help to detect intersections of two meshes.

yes, overlap in mathutils.bvhtree does show pairs of polygons that are intersecting if any.
You will have to create 2 bvh trees, for each mesh, using one of the methods given in the api (from Object, from Bmesh, from Polygons), then use those as pairs = bvhA.overlap(bvhB)
So a basic check would just see if that list is [] or something. Or may further use the pairs of poly to do something.

Note that there are some limitations

it does not account for other info, if one obj is inside another, normals etc, only if they touch
it does not work for coplanar poly well, for example 2 blender default plane objects, one slightly shifted x (not reliable on this)

For a test I used the standard objects Suzanne and Cone with this code:import bpy
from mathutils.bvhtree import BVHTree
scene = bpy.context.scene
Suzanne = bpy.data.objects["Suzanne"]
Cone = bpy.data.objects["Cone"]
Tree_Suzanne = BVHTree.FromObject(Suzanne, scene, deform = False,
render =  False, cage = False, epsilon = 0.01)
Tree_Cone  = BVHTree.FromObject(Cone, scene, deform = True,
render =  False, cage = False, epsilon = 0.01)
overlap_pairs = Tree_Cone.overlap(Tree_Suzanne)
print(len(overlap_pairs)). The result: Always 96 independent of the position of objects ??

I only used from polygon. Where you have vectors and poly indices. And I used  obj.matrix_world * vector.  And it worked very well. I guess this also goes for bmesh, as there is a bmesh transform (with matrix) that u can use first.

You are completely right. If I use the bmesh transform it works! Thank you


text:
No option to create Animation Node editor
In Blender versions 2.82a/2.83/2.90 I do not have option to create Animation Node Editor, all other 8 general editors (3D Viewport to Movie Clip) are listed (as well as usual Animation, Scripting and Data)
This is after crash using Animation Node Editor (undeleting a Node) but even though have completing removed the Blender directory and ".../config/userpref.blend" and clean reinstall the Animation Node Editor is not listed, what other files do I need to remove?
I can not report bug/ask for help at developer.blender.org as made a mistake with my email address!
This is under 64 bit Ubuntu 18.04.4 LTS, thank you for any help!

Did you actually re-activate the add-on after reinstalling blender ?

Animation nodes is an addon. Did you enable it?

Ooops, forgot that is was add-on. Strange that is was unavailable after the crash but before reinstall... never mind - thanks!


text:
Why don't I see the full range of a color ramp gradient after using modulo?
I'm trying to make a repeating color ramp around the outside of a cylinder (i.e., ten separate instances of black-purple-green). Unfortunately, I lose the spectrum of color ramp colours when I use the modulo function to repeat (I only get black-purple). Is there another way of doing this to get the full color ramp to repeat using a radial gradient texture?

Since no one has answered the actual question in the title, a node that takes its input modulo 0.1 will always output a result between 0 and 0.1, so you’ll always get only the first 10% of the color ramp.

Try this setup. The key is the MAP RANGE node.

Huge thanks! Sending good vibes your way. I haven't come across this node before.

No problem. You can play with the two lower values to "push" the gradient around a bit, but it should be good as is. Happy travels.

If you know you're only ever going to need a 0-1 range in the segments, you can just use a multiplication .. but @Christopher's answer is more flexible.

BTW, you can up-vote his answer as well as accepting it :)


text:
How do I get a simple deform modifier to twist from the bottom of the object instead of the middle?
I'm trying to copy this animation I found online (first image) using blender 2.83. I'm using a combination of a shape key (to squash the cube), a simple deform modifier (to twist), and finally keyframing the cube for rotation. My issue is the deform modifier twists the entire cube - in the original animation the base stays locked. How might I go about this? Any suggestions would be greatly welcome. Thanks
PS - I also tried twisting the cube using a shape key but the end result would intersect itself and looked ugly.
This is my Blender File

You just have to slide your controlling empty 1 unit down.

exactly, except it goes in the other direction at the end, the cube does something like frame 30 = 0°, frame 45 = 360° (instead of -180)

Yes! Huge thanks. I'm pretty new to Blender and was racking my mind for hours trying different approaches unsuccessfully. Sending good vibes your way.


text:
Changing Normal Faces
I would like to know if there is a way to change normals faces orientation of a figure. I followed a tutorial for making leaves in a tree but it finishes with unity i think.
here is a figure:

he uses a lager shape to steal normals from it like this:
before:
after:
so he finally gets this result:
I tried with data transfert modifier, normal edit modifier and edit mode/mesh/normals but i only manage to change split normals so i dont get the same effect. Maybe there is a way with the nodes or with a better use of modifiers or even deeper with scripting. Im a beginner so maybe someone could help me.


text:
Making edges render with Cycles
I'm using the Laplacian Lightning Generator, and have figured out how to make the generated lightning renderable in Blender Internal. While I (probably?) could use this, there's a few issues with me using BI, such as the quality of Cycles (e.g., really detailed shadows) not being available with BI.
I read in the Lightning addon comments that you can convert it to a curve, or use wire material. Is wire material available in Cycles?
I tried converting it to a curve, but I can't figure out how to make it visible in render from there. I could extrude it, but then it'd be a 2D plane of lightning, as the lightning itself is just edges (wouldn't it?)
I'm wanting it to be similar to the video showcase it has; glowing, bright, etc. I also need to be able to animate this rather easily, I'm still new around here. :P
I apologize if these are really dumb questions. Thank you in advance! :D

There is a wire node, but it takes the geometry that's outputted to the renderer, so it's all triangles. There's also freestyle, but if I've heard correctly, it's very slow. I'll also mention that there are several ways to make a wireframe version of a mesh before rendering.

try wireframe modifier or skin modifier

@TARDISMaker I'll look into the wire node, and see if it will work for me. Thank you!

And Chebhou, the wireframe modifier worked, but made it look extruded. I think compositing would allow me to make it look glowy (like real lightning) but I don't think it would work while trying to animate, would it?
Thanks Cegaton, though those methods wouldn't work for me, as I mainly need this to be as animation-friendly as possible.

Can you link to the video?

The laplacian Lightning generator produces a set of Mesh objects. At its most basic setting, using two empties (origin and ground).

You can use the Single Mesh tickbox to make sure it's all one mesh, you lose flexibility, but the sake of example that method is probably handiest.

You can add a skin modifier to the mesh. By default the skinned edges is probably not the right size, you enter edit mode on the mesh, and go to vertex selection mode, select all vertices, then ctrl+a to scale down the radius of the skin.
Alternatively convert it to a Curve object (it will convert each edge to a straight section Curve type)  (alt+C > Curve From Mesh)

Both solutions will render fine in Cycles.

For the animation, perhaps you might use a Build Modifier and tick reverse. Remember Light is a really fast phenomenum, often all we see is the trail of air burning and extinguishing rather fast.
Ultra Slowmotion:

I think it might have been better to subdivide the generated mesh a few times..now it exhibits jumps..
Credits to gandalf3 for this one:

Alternatively
(unless you need to generate a tonne of different strikes) Why not trace a photograph and use artistic discretion to 3d spatialize it, and animate that strike:)

I tried single mesh, like you said, and then the skin modifier, and it worked!
Thank you! You helped me a ton! :D

You're welcome! keep experimenting, it's a tricky phenomenon to simulate believably.


text:
Cycles texture with alpha doesn't work after using AnimAll for animating UVs
I need a texture to be animated with AnimAll and have transparency at the same time. Is this possible?
Here is the .blend file. It is the bird that encounters the problem. I'm trying to make its wings flap.
https://drive.google.com/file/d/0B2VC7joyS00fNUdPYWk1M0ZoWTA/view?usp=sharing

The textures are missing from the file, can you save the file with packed textures?


text:
Shwinkwrap with evenly spaced face edges
Is there a way to shrinkwrap a cylinder (without top & bottom faces) around an irregular/non-rotational solid and have the edges which are adjacent to faces distributed evenly?
In other words, if the cylinder were to be flattened out, I would like to get something like this:
|  |  |  |  |  |  |  |  |  |  |

instead of
| |    | |   | |    |  | | |     |

I don't care if the vertices are off on the axis parallel to the faces.
I want to dupliface the cylinder and the children objects have to be evenly spaced.
Thanks in advance :)

Ok guys, solved my problem.
What follows is a brief tutorial through the steps I used.
Simple example here, but a better possible implementation is decribed at the bottom.
-I started with a sphere I deformed a bit to get it to be irregular
-Went in edit mode and selected a loop ring (Alt+RMB)

-Duplicated the loop ring (Shift+D, Enter). Separated it from the original shape (P), moved it +2 on Z-axis

-I converted the loop ring from Mesh to Curve (Spacebar -> "Convert")
-Created a Plane and scaled it to the size I needed. Applied to it an array modifier and a curve modifier (along the loop ring)

-Applied the modifiers. Merged the two ends (select vertices in Edit Mode, Spacebar -> "Merge". Or Alt+M. At center)
-moved the plane -2 along Z-axis (G Z)

These planes are not "parallel" to the object's surface. I reckon you could repeat the process for two separate edge loops (the closest to the area you want to cover). Create two separate planes, or segments (?) and array them for the same number of times. Merge the "ring" ends you get. Only keep the inner edge loops, delete the rest (if you used planes). Join the two edge loops in one object. Bridge the two edge loops. This way you get trapezoidal planes, which give the right angle to child objects in case you want to dupliface the loop's faces. :)
Ask if you need any other help :)


text:
Deform mesh along two curves
I'm trying to modify a mesh so that one side gets modified along a curve, and one other side gets modified along another curve.
I tried with vertex groups but it only moves the vertexes in the group, without deforming/moving the rest.
Lattice would be an altenative, I guess, but using curves would make my task easier.
Graphic example as usual:

How do I get the mesh to go all wibbly-wobbly with the bottom face following the bottom curve and the top face following the top curve?
Update:
This is the desired effect

I got it to work in this real simple example by creating a lattice with u:20,v:1,w:2. Grouped top and bottom vertexes in two different groups. Added a a curve modifier to top group along the top curve and another one to the bottom group along the bottom curve. It works in this easy case, but it's not really versatile.
What if I wanted to do something like this? Where the inner edge loop of the torus follows the inner bezierCircle and the outer edge loop follows the outer bezierCircle, with all other edge loops arranging harmonically

Would it work to convert the curves to a mesh and bridge the edges?

Not really. My bad, that is actually a parallelepipedon in ortho, not a plane. I was looking for something more versatile which could be applied to cubes, cylinders, toruses and so on...

You could check out the curve volume addon, unfortunately you have to pay for it though.

You say 'curve along two curves', what do you mean by the first curve-word, because you use a mesh, right? :)

Could you draw/sketch what result you want to achieve?

http://blenderartists.org/forum/showthread.php?366107-MiraTools CHeck out the curve guide portion of Mira Tools

You can achieve kind of that modeling manually.
Select 2 curves, join them, convert to mesh and use Bridge Edge Loops to fill space between them:

Add a loop cut, select it, P to separate selection, and delete new created loop. Enter Edit mode of that separated selection, and extrude it in one of horizontal (in my case) directions:

Join 2 meshes, in Edit mode select outer loops and use again Bridge Edge Loops tool to make faces between them.

I added 2 loopcuts to define another form of the mesh and scaled them by X axis with Pivot set to central loop so to make them not on the default position.
After deleting non-manifold geometry the mesh became like this:

And this is what is done with this technique as for torus:

On the left is the curve I used to define that shape, on the right - the resulting mesh.
It's not ideal and automated, but you may always refine loops' position so it to look in another way.

Advantages
The only one as for me (comparing to Lattice using) - is that you definitely use curves you create to define the shape of the resulting meshes.


text:
How can I create many objects quickly?
In my application I have to create up to some 1000 tetraders (objects with 4 vertices, 4 faces, 6 edges). As input I get only the absolute vertex coordinates for each tetraeder. From the mathematical background I know that all tetraeders are identical but have a different location and rotation which I do not know.
The following code works (Tetra is some class providing the vertex coordinates of an tetraeder and some other informations which is not relevant here):
# object creation
def draw_Tetra(Tetra, Faces):

    bm = bmesh.new()
    V1 = bm.verts.new(Tetra.Vertices[0])
    V2 = bm.verts.new(Tetra.Vertices[1])
    V3 = bm.verts.new(Tetra.Vertices[2])
    V4 = bm.verts.new(Tetra.Vertices[3])

    if Faces == True:
        bm.faces.new((V1, V2, V3))
        bm.faces.new((V1, V2, V4))
        bm.faces.new((V1, V3, V4))
        bm.faces.new((V2, V3, V4))
    else:
        bm.edges.new((V1, V2))
        bm.edges.new((V1, V3))
        bm.edges.new((V2, V3))
        bm.edges.new((V1, V4))
        bm.edges.new((V2, V4))
        bm.edges.new((V3, V4))

name = "T_" + Tetra.Type + "_" + Tetra.pedigree
me = bpy.data.meshes.new(name)
bm.to_mesh(me)
bm.free
obj = bpy.data.objects.new(name,me)
scene = bpy.context.scene
scene.objects.link(obj)

However the script is extremely slow, e.g. to create 5000 tetraeders takes many hours. I think that I have the same problem as discussed here:
Python performance with Blender operators
The problem is that I do not know how to use "low level code" in this special situation. Can someone give me a tip?

I think "tetrader" is the German(?) word for what in English is known as a "tetrahedron", or if plural "tetrahedra". It seems that you are referring to regular tetrahedra since you mentioned them being mathematically all identical in proportion. Just pointing this out for clarification. Sorry I don't have enough Python knowledge to help answer your question.

Have you had a look at bpy.ops.mesh.convex_hull?

No, I did not look at bpy.ops.mesh.convex_hull because the most important point is NOT to call bpy.context.scene.update for every new created object but only once.

Not sure how much faster this will be (hard to test your code since you only posted a fraction of it), but here's another approach that might be faster. It was quite fast in a test I ran here, 0.02 sec for 50 tetraders.
This approach is based on creating just one "base" tetrader object, and duplicating and updating its verts in every loop cycle:
import bpy
import time

start = time.time()

def draw_base_tetra():
    bm = bmesh.new()
    V1 = bm.verts.new((0.5,  0.5,  0.0))
    V2 = bm.verts.new((0.5, -0.50, 0.0))
    V3 = bm.verts.new((-0.5, 0.5,  0.0))
    V4 = bm.verts.new((0.0,  0.0,  1.0))

    bm.faces.new((V1, V2, V3))
    bm.faces.new((V1, V2, V4))
    bm.faces.new((V1, V3, V4))
    bm.faces.new((V2, V3, V4))

    name = "tet"
    me   = bpy.data.meshes.new(name)
    bm.to_mesh(me)
    bm.free

    obj   = bpy.data.objects.new(name,me)
    scene = bpy.context.scene
    scene.objects.link(obj)

    return obj

o = draw_base_tetra()
Tetrads = get_tetrads_from_some_source()

for Tetra in Tetrads:
    d = o.copy()
    bpy.context.scene.objects.link(d)

    for i,v in enumerate( d.data.vertices ):
        v.co = Tetra.vertices[i]

end = time.time()
print( end - start )

Yes I mean tetrahedron, but not regular ones. For the code I will look on monday

You can change the vertex coordinates in each tetrahedron just like in your original script, only difference is using duplication to create objects instead of creating them from empty mesh objects.

You could replace len(Tetrads) x 2 operator (dupe & select all)  calls with o = o.copy()

Hmm, not really - that only copies the data, but does not create a new object in the scene

Add scene.objects.link(o) to link it to the scene. With that many operator calls you are going to encounter the performance hassles (link in OP).

@batFINGER That does make sense. Updated the answer.

Could also look at using from_pydata ? The following runs in 11 seconds on my Athlon pussbox.  Creating and freeing a bmesh for each new mesh seems a little overkill.
import bpy
import time

class Tetra():

    def object(self, scene):
        obj = bpy.data.objects.new("Tetra", self.mesh_from_pydata())
        scene.objects.link(obj)
        return obj

    def mesh_from_pydata(self):
        me = bpy.data.meshes.new("some_name")
        me.from_pydata(self.Verts, [], self.Faces)
        return me

    def __init__(self, verts):
        self.Verts = verts
        faces = []
        for i in range(4):
            faces.append([j for j in range(4) if j != i])
        self.Faces = faces

        pass

# test drive
context = bpy.context
scene = context.scene
start = time.time()
for x in range(5000):
    if not x % 100:
       print("Creating Object", x)
    tet = Tetra([(0.5,  0.5,  0.0), (0.5, -0.50, 0.0), (-0.5, 0.5,  0.0), (0.0,  0.0,  1.0)])
    obj = tet.object(scene)

end = time.time()
print("Done in %d seconds" % (end - start) )

The speed gain is amazing! Thank you so much

when I run the second script (the one with from_pydata) on my computer I also observe the 11 seconds computing time. But when I select the objects in the viewport, delete them and run the script again time increases (41 seconds after third repetition). The outliner shows that there are more and more some_name.xxxx meshes which are not deleted. Is it possible to delete the objects AND the meshes in a script?

You can use the remove method  bpy.data.objects.remove(ob)... meshes.remove(me)...  The object needs to have no users.  IMO saving and reopening is a quick and easy way to remove xs deleted objects.  It may, and probably has, improved but often my scripts that perform many removes  result in blender crashing.

This works very fine. Remove does not cause problems in Blender 2.76 even when several thousand meshes are removed.

This works very fine. Remove does not cause problems in Blender 2.76 even when several thousand meshes are removed. However, I do not understand why there is such a big speed gain. In comparison to my code there is about the same number of object.new and object.link calls. In order to learn for other projects it would be helpful to gain more understanding.

Have a look in the orphan objects, your old meshes stay there. Delete all from here before relaunching the script

In Blender, calls to bpy.data.objects.new() and .copy() become slow when there are many objects in the scene. So far, I've discovered that using a Particle system with Render->Object and Convert results in the fastest way to create many Blender objects. Using the code below I was able to create 5000 new objects in ~1.9s.
The particle system method also allows setting object location and rotations using .foreach_set() while the objects are still particles, which is must faster than looping over objects after they've been created.
Method:
import bpy
import numpy as np

def create_many_copies(target_obj, count):
    # Create a particle system container
    bpy.ops.mesh.primitive_cube_add()
    cube = bpy.context.object

    # Create a particle system within the container
    bpy.ops.object.particle_system_add()
    particle_sys = cube.particle_systems[0].settings

    # Set parameters so all particles show up at once
    particle_sys.frame_start = -1
    particle_sys.frame_end = 1

    particle_sys.count = count

    particle_sys.emit_from = 'VOLUME'

    # No random rotations
    particle_sys.use_rotations = True
    particle_sys.rotation_mode = 'NONE'

    # No physics
    particle_sys.physics_type = 'NO'

    # Duplicate the target object for each particle
    particle_sys.render_type = 'OBJECT'
    particle_sys.dupli_object = target_obj
    particle_sys.particle_size = 1.0
    particle_sys.use_rotation_dupli = True
    particle_sys.use_scale_dupli = True

    # Make sure we're at the correct frame
    bpy.context.scene.frame_set(1)

    # Efficiently set the location of the objects (here all to 0,0,0)
    # must be a flat array/list with all locations pre-set
    # Otherwise the locations will be random and can be set by
    # looping over objects (slower than foreach_set)
    # Rotations can be set in similar fashion
    locs = np.zeros(count*3)
    cube.particle_systems[0].particles.foreach_set("location", locs)

    bpy.ops.object.duplicates_make_real()

    # Cleanup
    bpy.data.meshes.remove(cube.data)
    bpy.data.objects.remove(cube)
    bpy.data.particles.remove(particle_sys)

Test code:
# Delete old dups
#for ob in bpy.data.objects:
#    if "." in ob.name:
#        bpy.data.objects.remove(ob)

# Tetrahedron is the mesh object to copy
target = bpy.data.objects['Tetrahedron']
create_many_copies(target, 20)

Performance test:
import timeit
print(timeit.timeit('create_many_copies(target, 5000)', number=1,globals=globals()))

>>1.9518235036226486

This method is essentially letting the optimized particle convert operator do the work and avoid some of the overhead of creating objects with .new() and scene.link() calls.
Once pre-created, the new object properties can be set as desired without incurring the creation cost.
This method works for making copies of Meshes, Empties, and Curves (it might work with other types, but I haven't tested it).

Looks good, I will try it.