text:
Material panels disappear with custom RenderEngine
I've been attempting to make a custom render engine in Blender Python. From all the sample code that I gathered, I managed to put together a basic render engine, of which the result is shown below. All it does for now is render all the mesh objects in the current scene in their corresponding diffuse color, in respect to the viewport camera.

However, I noticed that when enabling the render engine, several panels appear differently in the UI. The materials panel in particular, which appears almost completely gone:

Eevee (left), Custom (right)
For the render engine, I have to support UV mapping which means I need the materials panel.
How can I keep the default panels? Will I have to code my own?

Source code:
import bpy
import bgl
import gpu
from gpu_extras.batch import batch_for_shader
from mathutils import *

class DrawData:
    def __init__(self, ob):
        mesh = ob.data
        mat = ob.matrix_world

        diffuse_color = mesh.materials[0].diffuse_color
        verts = [mat @ v.co for v in mesh.vertices]
        ind = []

        for poly in mesh.polygons:
            ind.append([poly.vertices[i] for i in [0, 1, 2]])
            ind.append([poly.vertices[i] for i in [2, 3, 0]])

        self.color = diffuse_color
        self.verts = verts
        self.ind = ind

    def __del__(self):
        del self.color
        del self.verts
        del self.ind

    def draw(self):
        shader = gpu.shader.from_builtin('3D_UNIFORM_COLOR')
        shader.bind()
        shader.uniform_float("color", self.color)

        batch = batch_for_shader(shader, "TRIS", {"pos": self.verts}, indices=self.ind)
        batch.draw(shader)

class CustomRenderEngine(bpy.types.RenderEngine):
    # These three members are used by blender to set up the
    # RenderEngine; define its internal name, visible name and capabilities.
    bl_idname = "custom3d"
    bl_label = "Custom 3D"
    bl_use_preview = True

    # Init is called whenever a new render engine instance is created. Multiple
    # instances may exist at the same time, for example for a viewport and final
    # render.
    def __init__(self):
        self.scene_data = None
        print("RenderEngine created")

    # When the render engine instance is destroy, this is called. Clean up any
    # render engine data here, for example stopping running render threads.
    def __del__(self):
        del self.scene_data
        print("RenderEngine deleted")

    # This is the method called by Blender for both final renders (F12) and
    # small preview for materials, world and lights.
    def render(self, depsgraph):
        scene = depsgraph.scene
        scale = scene.render.resolution_percentage / 100.0
        self.size_x = int(scene.render.resolution_x * scale)
        self.size_y = int(scene.render.resolution_y * scale)

        # Fill the render result with a flat color. The framebuffer is
        # defined as a list of pixels, each pixel itself being a list of
        # R,G,B,A values.
        if self.is_preview:
            color = [0.1, 0.2, 0.1, 1.0]
        else:
            color = [0.2, 0.1, 0.1, 1.0]

        pixel_count = self.size_x * self.size_y
        rect = [color] * pixel_count

        # Here we write the pixel values to the RenderResult
        result = self.begin_result(0, 0, self.size_x, self.size_y)
        layer = result.layers[0].passes["Combined"]
        layer.rect = rect
        self.end_result(result)

    # For viewport renders, this method gets called once at the start and
    # whenever the scene or 3D viewport changes. This method is where data
    # should be read from Blender in the same thread. Typically a render
    # thread will be started to do the work while keeping Blender responsive.
    def view_update(self, context, depsgraph):
        print("RenderEngine.view_update called")

        region = context.region
        view3d = context.space_data
        scene = depsgraph.scene

        # Get viewport dimensions
        dimensions = region.width, region.height

        if not self.scene_data:
            # First time initialization
            self.scene_data = {} # Dictionary
            first_time = True

            # Loop over all datablocks used in the scene.
            for datablock in depsgraph.ids:
                pass
        else:
            first_time = False

            # Test which datablocks changed
            for update in depsgraph.updates:
                print("Datablock updated: ", update.id.name)

            # Test if any material was added, removed or changed.
            if depsgraph.id_type_updated('MATERIAL'):
                print("Materials updated")

        # Loop over all object instances in the scene.
        if first_time or depsgraph.id_type_updated('OBJECT'):
            for instance in depsgraph.object_instances:
                ob = instance.object
                if ob.type == 'MESH':
                    print("\tname: %s \ttype: %s" % (ob.name, ob.type))

                    self.scene_data[ob.name] = DrawData(ob)

    # For viewport renders, this method is called whenever Blender redraws
    # the 3D viewport. The renderer is expected to quickly draw the render
    # with OpenGL, and not perform other expensive work.
    # Blender will draw overlays for selection and editing on top of the
    # rendered image automatically.
    def view_draw(self, context, depsgraph):
        print("RenderEngine.view_draw called")

        view3d = context.space_data
        r3d = view3d.region_3d

        gpu.matrix.load_matrix(r3d.perspective_matrix)
        gpu.matrix.load_projection_matrix(Matrix.Identity(4))

        bgl.glClearColor(0.01,0.01,0.01,1)
        bgl.glClear(bgl.GL_COLOR_BUFFER_BIT | bgl.GL_DEPTH_BUFFER_BIT)
        bgl.glEnable(bgl.GL_DEPTH_TEST)

        for ob_name in self.scene_data:
            drawdata = self.scene_data[ob_name]

            drawdata.draw()

# RenderEngines also need to tell UI Panels that they are compatible with.
# We recommend to enable all panels marked as BLENDER_RENDER, and then
# exclude any panels that are replaced by custom panels registered by the
# render engine, or that are not supported.
def get_panels():
    exclude_panels = {
        'VIEWLAYER_PT_filter',
        'VIEWLAYER_PT_layer_passes',
    }

    panels = []
    for panel in bpy.types.Panel.__subclasses__():
        if hasattr(panel, 'COMPAT_ENGINES') and 'BLENDER_RENDER' in panel.COMPAT_ENGINES:
            if panel.__name__ not in exclude_panels:
                panels.append(panel)

    return panels

def register():
    # Register the RenderEngine
    bpy.utils.register_class(CustomRenderEngine)

    for panel in get_panels():
        panel.COMPAT_ENGINES.add('custom3d')

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

    for panel in get_panels():
        if 'custom3d' in panel.COMPAT_ENGINES:
            panel.COMPAT_ENGINES.remove('custom3d')

if __name__ == "__main__":
    register()

After reading Marty's answer and examining the source code of the built-in material panels, I realized that the problem actually lies in the code I posted above. In particular the line:
if hasattr(panel, 'COMPAT_ENGINES') and 'BLENDER_RENDER' in panel.COMPAT_ENGINES:

This basically means any panels that are not compatible with "BLENDER_RENDER" will be excluded, thus also excluding the Eevee panels.
To solve it, I changed the get_panels() method to also include any other panels that I want:
def get_panels():
    exclude_panels = {
        'VIEWLAYER_PT_filter',
        'VIEWLAYER_PT_layer_passes',
    }

    include_panels = {
        'EEVEE_MATERIAL_PT_context_material',
        'MATERIAL_PT_preview'
    }

    panels = []
    for panel in bpy.types.Panel.__subclasses__():
        if hasattr(panel, 'COMPAT_ENGINES'):
            if (('BLENDER_RENDER' in panel.COMPAT_ENGINES and panel.__name__ not in exclude_panels)
                or panel.__name__ in include_panels):
                panels.append(panel)

    return panels

In this case, I added the material slots and the material preview to the supported panels.

I assume you have enabled developer extras in Preferences → Interface → Display.  That done, you can sometimes look at the code to see why things are happening, by hovering over a field, right clicking, and selecting "Edit Source" from the context menu.
In this case, one clue can be found around line 1222 of ui.py where it uses variables like cycles.use_shading_nodes.  That is, what it draws in the UI depends on what render engine you have set.
So the unfortunate answer to your question is that Blender makes UI decisions based on the render engine, and if you want to have it behave the same way for your engine as it does for cycles, you need to modify the Python UI code.  The good news being that you should be able to get away with not having to modify the Blender C code.
I would suggest that you look at the source for a 3rd party Open Source render engine, like Lux Core Render to see how they handle such situations.

Thanks, this answer was most helpful. You definitely pointed me in the right direction with "Edit Source", which I had totally forgotten about. I will post an answer explaining what I did to solve it.


text:
Move segments of an sphere apart from each other
I have a sphere of hexagons, made from an Icosphere and Ctrl Shift B (whatever that short cut is?), which I then split each selected hexagon apart from the original object (resulting in 33 of them).
I want to move the hexagons away from the center so they get some space/gap between them, not scaling as this just make the whole thing bigger. I need to move each hexagon in the direction that they are facing or from center point of the old Icosphere.
How do I do this?

Select all of your objects in object mode and choose Object -> Transform -> Origin to Geometry.
Then the origins will move to the center of each piece.
Then in the bottom header, to the right of the Object Mode drop down, is a button with a double-headed arrow beneath three dots. Turning this one will "Move Object Origins only..." Then, when you scale it will only scale their POSITION, not their SIZE.
Don't forget to turn it back off.

Picture added. ALT S doesn't do activate anything for me? Object mode? Or do I have to do this in each objects mesh edit mode? ALT S doesn't seem to work there either.

Sorry, in edit mode. But now that I see the picture, your situation is different. I'll change the answer.

source: Stack Exchange

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

sort: votes


text:
Blender as 3D real-time visualizer
I am new to Blender and 3D graphics in general, and would like to know whether the software is the right choice for the following task: I would like to visualize position data coming from an external simulation (think many many cars driving around, possibly with lights) in real-time while adding lights and textures (e.g. a CAD model of a city, street lamps, etc.). At the same time, I would like to be able to zoom, pan, and rotate the view.
If possible, I also would like to eventually render the entire animation (maybe with higher quality effects, in this case position data can be extracted from a CSV, and the rendering does not have to be real-time).
The idea would be to be able to control the location of the cars and some of the parameters (e.g. the intensity of the car lights) from the external simulation. The scene would probably be created before directly in Blender (or just imported using compatible 3d-models). Ideally, the scene is embedded in an external graphical interface (e.g. a simplified 3d view that only allows to zoom and pan).
Is Blender the right software for this? If so, do you have any hints to get started (e.g. reads the section about Phython API, etc.).
Thank you very much,
Fede

So, maybe using the Blender Game Engine?  Or maybe another game engine will work (Unity and Unreal are two free ones)?  On eventually rendering, you would need to cache the data somewhere.

The short answer is "yes."
The longer answer is "it depends on exactly how you want to do it."
If you can be a bit more specific about what kind of data you're wanting to import, that'd be really helpful. You can get just about anything you want into Blender, but it might be simpler to pre-process it with another application. Knowing what that is and where it comes from will help us to make some recommendations.
If you can be a bit more specific about your intended result, that'd be really helpful. Blender can do real-time 3D as well as feature-film-quality video... and anything in between. More information will make it easier to be more helpful.
As for the best place to start, I would NOT (perhaps surprisingly) recommend studying the Python API. It has a Python API. That's really about all you need to know. It can do anything Python can do, so technically you can literally do almost anything you want with Blender. You might even be able to write an Operating System with it... though I don't know how much help Blender would be in that process.
Generically, the best place to start would be the Blender Manual. Figure out what Blender does and how it does it. Then you will have a much better idea of whether or not you want to use it for your project.
Hope that helps!

Thanks. I envision having a visualization of cars driving around a city. The data produced by an external simulation would be a position, orientation, lights intensity and color of every car (think 100-200 cars). The data will be available via a middleware or some other inter-process communication at 25fps. This for the real-time. For the non real-time, the data could simply be stored in a CSV file as a time-series and read as necessary (there, if the rendering takes more than real-time is no problem).

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


text:
Importing X, Y, Z data with a know datum
I am an archaeologist and I need help. I want to make a 3-D model of archaeological structures that I have x,y and Z data for. The xyz data are in CSV file format. I could also make a shapefile in ArcMap. I would like to try and load the coordinates in but I am not sure if there is a way. If I have to do it manually that is okay. Is there a quick way to do this?
Thanks
Jacque

Depends on what format you have this data and how it is stored. Could you elaborate? Please edit your question and add more information.What do you mean by X,Y,Z data, is it a spreadsheet like format like Excel? CSV data, a list of points in a text file, JSON? My guess is this can be easily done, but not directly through the UI, only using blender's API and python scripting

Related: http://blender.stackexchange.com/q/27536/599. You'll need some python for this. If you haven't already, you might also want to look into trying something like meshlab for importing/skinning pointclouds

Related

It is unclear to me what you mean with "a known datum" could you elaborate on that?

Don't know if you need this anymore, but as another archaeologist who just went through this, I'm gonna answer it.
For importing a point list into blender, you're looking for this add-on: https://blenderartists.org/forum/showthread.php?211735-A-Script-to-Import-a-CSV-File-and-Create-Meshes-(for-Blender-2-5x-or-later).  It has multiple options when importing, such as making a line from the sequence of points in the file or just importing the vertices without adding edges.
As it sounds like you're coming from geospatial data, you may need to re-project your data before bringing it into blender.  Blender (and other 3D programs like Unity3D and Meshlab) don't play well if your coordinates are over 1,000,000.  I work in a projected national grid that has eastings and northings that are all over 1 million and any time I forget to re-project into a local coordinate system before importing, things get VERY wonky.
Another concern you may need to address (that I'm still fiddling with) is the fact that geospatial data uses a right-handed z-up coordinate system while many 3D applications use a left-handed y-up coordinate system.  Depending on what you want to do with your models after blender, this may or may not be an issue.  It is for me, as I'm bringing each model individually into unity and need them to all match-up with one another.

Great first answer! And welcome to Blender.SE!

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


text:
How to export animation from blender to .3ds or .obj file without loosing animation?
I have a model and I created a simple animation for that object, it is in a .blend file.
How do I export it to .3ds or .obj without loosing the animation?
Reply to Comment(I can't comment since I don't have 50 rep),
Okay, then is it possible to convert .blend with animation to .md2 with the animation? or .fbx with the animation to .md2 with the animation?

3Ds and OBJ file formats don't support animation data, you cannot export motion data into any of those formats. Try FBX instead

Not sure what md2 format you mean, is this for the Quake IDTech2 engine? See https://developer.tizen.org/community/tip-tech/scenejs-creating-and-importing-3d-animations-md2-format


text:
Convert a animation that is based on a curve modifier to a modifier-free animation
Alright, describing this with my poor english will be a challange!
I have some objects wrapped around a bezier circle. It looks like the chain of a tracked vehicle. Using a single bone and the curve modifier, I can let the objects move around the bezier circle. Now I want to export the whole scene, including the animation, to a .fbx-file (used in Unreal Engine 4 later).
However, the curve-modifier does not work (I guess it is not even written into the fbx-file, is it?). If I just apply it to the object, it will move the whole object instead of letting the objects rotate around the bezier circle.
Now is there a way to convert the animation (meshes moving around a circle) into a modifier-free version?
Here is a video of my problem:
https://www.youtube.com/watch?v=WgoBHhpgoCQ
Here is the link to my project:
https://drive.google.com/open?id=0B4cbvO9kNaOQUEZOdzhmTjN5bzQ
Looking forward ideas! :-)

I did it this way for tank tracks but it's not a one click solution by a long shot!  It works well in Vers. 2,77a.  How it will go when exported is an unknown.  The plates are animated around the curve no problems and only for 5 frames.  These are repeated or looped as long as required.  The problem you might have is only one of the 5 models is visible at any single frame. The others are switched to invisible by using the 'eye' icon for each model in the Outliner at right. The Blend file - https://www.dropbox.com/s/35dtvgka986cpco/TankTracksWorkaround.zip?dl=0


text:
How to send picture to the background so i can see the plane?
So this is my workplace, i use this as a background image which will help me to modeling the plane but its look like this so i can't see the plane.

But If I visible the image, this appears.

So my question is: How can i send the plane in front of picture so i can see it?

The fastest way is to add a Background image.
Add->Image->Background
This will keep your image always in the back.

Even when it's physically in front.

Bonus:
You can change these settings for every image in your viewport.
You can also set your image to only appear in orthographic mode, make it transparent... etc.
Properties panel->Object Data
These settings are available for every image.

There diffrent ways:
1st way: Just drag and drop into the viewport
2nd way: In viewport menu: Add->Image->(Reference or Background)
3rd way: Use as Camera background. This can be seen in Camera only.

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


text:
How can I snap my vertex exactly to an edge, if the edge is at an angle?
So I am relatively new to blender, and I havent found an answer to this yet.
I have two different objects, and I want to snap my new extruded vertex exactly onto this edge on another object, while also extruding it along the global z axis.
I think you can see it in the picture:
I want to snap it exactly to the point where the purple arrow points to.

Maybe search for "snap to edge" and look through the related questions on the right. there are already a lot of answers on this topic. If none of those helps in your case, please explain wat makes it different and futher clarify what your goal is.


text:
Blender cameras convention
I would like to create cameras looking at origin uniformly distributed in a sphere. I got most of it right...but the cameras are looking away from the origin. I know I can get it right by a certain combination of rotations, but I want to be sure that what I am doing is 100% correct. Can someone familiar with this help me point out what's the right way to do it?
By changing the lookat slightly in the "wrong" way I can get what is expected result. However, what I would like to do is apply the coordinate transform matrix to the camera matrix after the "right" lookat is computed(right lookat==x-right,y-down,z-forward,i.e. the cv convention).
There is an additional problem with the code that looks right. The camera scale is negated for some reason. I thought scale is not affected by transform matrix. Having negative scale causes some other problem when I am converting the camera back to cv work.
looks wrong but should be correct?

looks right but wrong.

code to create cameras
import bpy
import bmesh
import random
import math
import numpy as np

from mathutils import Matrix

def sphere_golden_spiral(num_pts=1000):
    from numpy import pi, cos, sin, arccos, arange
    indices = arange(0, num_pts, dtype=float) + 0.5
    phi = arccos(1 - 2*indices/num_pts)
    theta = pi * (1 + 5**0.5) * indices
    x, y, z = cos(theta) * sin(phi), sin(theta) * sin(phi), cos(phi)
    points = np.stack((x,y,z),axis=-1)
    return points

def norm(v):
    return v/np.linalg.norm(v)

def lookat(eye,at=np.array([0.,0,0]),up=np.array([0.,1,0])):
    z = norm(eye-at)
    x = norm(np.cross(z,up))
    y = np.cross(x,z)
    z = -z
    view_mat = np.zeros((4, 4))
    t =np.array([0.,0,0])
    t[0] = -np.dot(x,eye)
    t[1] = -np.dot(y,eye)
    t[2] = -np.dot(z,eye)
    view_mat[0,:3]=x
    view_mat[1,:3]=y
    view_mat[2,:3]=z
    view_mat[:3,3]=t
    view_mat[3,3]=1
    return np.linalg.inv(view_mat)

def rotx(a):
    from math import cos,sin
    return np.array([[1,0,0,0],
                     [0,cos(a),-sin(a),0],
                     [0,sin(a),cos(a),0],
                     [0,0,0,1]])

def roty(a):
    from math import cos,sin
    return np.array([[cos(a),0,sin(a),0],
                     [0,1,0,0],
                     [-sin(a),0,cos(a),0],
                     [0,0,0,1]])

def rotz(a):
    from math import cos,sin
    return np.array([[cos(a),-sin(a),0],
                     [sin(a),cos(a),0,0],
                     [0,0,1,0],
                     [0,0,0,1]])

def cams_sphere(points):
    points = np.array(sphere_golden_spiral(points))
    group = bpy.data.groups.new('Trg_sphere')
    context = bpy.context
    for i in range(len(points)):
        p = points[i]
        bpy.ops.object.camera_add()
        cam = context.object
        cam.name='Traj_sphere_%i'%i
        transform = lookat(p*10)
        #print(rotx(math.radians(-90)))
        #transform = np.matmul(transform,roty(math.radians(-180)))
        cam.matrix_world = Matrix(transform)
        group.objects.link(cam)

cams_sphere(100)

For a non-coding result you can create a UV Sphere, zero out all the Transform and Rotations values of the Camera and then Parent the Camera to the UV Sphere. In the Properties of the UV Sphere open Instancing and Verts.

or you could just add the cameras and then add to them a "track to" constraint (which is particularly useful if you then want to move your origin)

Unfortunately, I need to be able to compute camera matrix manually correctly :(, as the rendered images will then be used to do 3d reconstruction which produces an estimated camera poses. Then I would like to be able to compare the ground truth camera poses computed here to poses produced by the algorithm(which should only differ by a rotation and translation offset)

The first line of lookat should be z = -norm(eye-at) (with a minus)

@lemon, it's wrong(I just run the code). And also I think mathematically, z should be negated after the second cross product?

@ZawLin, don't think so (run it too), and the -norm seems to make the result. Though, we don't know which cam orientation you need: I mean we can target at something but what do you expect as rotation around the target axis?

I'm assuming that this is not a math.se question,  but a blender.se question, therefore [frame challenge] I'd suggest to use the builtin types and methods.
If you want to know why your math doesn't work, Blender.SE might not be the right place.
I will add some more tips to restructure your code, but take them with grain of salt, as I am no software dev.

I would also discourage the excessive scoping of types from imports at the start of functions. I can see at a glance that np.sin is a numpy function, but have a hard time otherwise.
The x, y, z tuple in the sphere_golden_spiral function was barely readable.

PEP: Limit all lines to a maximum of 79 characters

Separate the lookat function from a "position" functions. Right now the lookat function produces a matrix containing the position. This is not very intuitive.
Use enumerate if you want both index and object. (Not range(len(...)).)
If you want to multiply your numpy array times 10, don't multiply the individual elements, multiply them all at once.
Replace look_at with the built-in to_track_quat.
Use the built-in Vector, Quaternion and Matrix types.

A modified script.
import bpy
import numpy as np
import mathutils

def sphere_golden_spiral(num_pts=1000):
    indices = np.arange(0, num_pts, dtype=float) + 0.5

    phi = np.arccos(1 - 2*indices/num_pts)
    theta = np.pi * (1 + 5**0.5) * indices

    x = np.cos(theta) * np.sin(phi)
    y = np.sin(theta) * np.sin(phi)
    z = np.cos(phi)
    points = np.stack((x,y,z),axis=-1)
    return points

def cams_sphere(num_pts):
    points = sphere_golden_spiral(num_pts) * 10

    for i, point in enumerate(points):
        bpy.ops.object.camera_add()
        cam = bpy.context.object
        cam.name='Traj_sphere_%i'%i

        cam.location = mathutils.Vector(point)
        cam.rotation_mode = 'QUATERNION'
        cam.rotation_quaternion = cam.location.to_track_quat('Z', 'Y')

cams_sphere(100)

Obviously, you can use the longer (possibly more stable) version with a matrix multiplication.
        bpy.ops.object.camera_add()
        cam = bpy.context.object
        cam.name='Traj_sphere_%i'%i

        location = mathutils.Vector(point)
        rotation = location.to_track_quat('Z', 'Y')

        mat_loc = mathutils.Matrix.Translation(location)
        mat_rot = rotation.to_matrix().to_4x4()

        cam.matrix_world = mat_loc * mat_rot

Thanks! I am checking out your changes. Yes, your method is indeed doing what I want to do. Might you also know what is wrong with my lookat code?


text:
Particle Ring Simulation (Asteroid Belt)
I have a set of particle simulations attached to rings around a planet. When I run the simulation they circle correctly but they start traveling out and away from the rings.
Is there a way to get the particles to still move and rotate yet stick / adhere to the rings?

You can use geometry node to do this.

The two attributes nodes add some randomness to scale and rotation
The rotation of ateroids is animated with the point rotate node (only on X axis for instance).
The point instance node add an instance to all vertex on the circle wich is modified by geometry node
You can add displace modifier before GeoNode modifier in the modifier stack to get more randomness or you can even edit your circle

wow this is awesome

If you want the asteroids to rotate on themeselves maybe you could create a bunch of asteroids, make them rotate on themselves, put them into a collection, give a Hair particle system to a circle, choose Render As > Collection, and enable the Rotation option, then make the circle rotate on itself.

Would setting it Hair vs Emitter still allow normal rotation characteristics? or would I have to redo most the values? I will try your suggestions though. I thank you.

what kind of rotation are you planning to do?

It's generally a simulation of rings around a planet.. With a bunch of rocks that I created  that the particle system is choosing from.
They need to rotate around the planet on a whole...  and then move a bit freely so that they look natural and not static.

yes so it would be interesting to find the best way to instance the rocks and make them rotate on themselves... Maybe instances of collection? It will take the meteorites rotations into accoun


text:
How to Snap to a curved object
Im trying to make a heatshield design..
and i made a test cylinder with full heatshield, and i did that manually rotating, then dublicating..

But now that i want to do it on a nose cone, i have no idea how to get it to snap and curve with the nose cone shape.

ive tried using an array modifier,
ive also tried to shrink wrap it, both of these to no success
im sorta a beginner to blender, but i know the basics and how to get around.

if the cone is another object you can try to give a Surface Deform modifier to your grid with a cylinder as Target then shrinkwrap your cylinder to the cone. Or directly deform your grid with a lattice?

The whole nose cone is one thing, the grid part and the interior looking part is all one thing

Let's say that my vertical bars are your grid object. I've also created a cone. Create a cylinder (here I display only its wireframe to keep the cone visible), give it the same radius as your grid, give it some horizontal subdivisions:

Give your grid (here, my bars) a Surface Deform modifier with the cylinder as Target, click on the Bind button. Now give the cylinder a Shrinkwrap modifier with the cone as Target, the cylinder will stick to the cone surface and the bars will follow:

the actual nose cone itself was not made in blender, it was brought in from somewhere else, so its all one thing,
all i want to do is find a way to fill the whole nose cone up with these little tiles...(https://i.imgur.com/EwYjl3t.png)
and have them all follow the contours of the nose cone, and wrap around it nicely.
as an example of what im trying to do : (https://i.imgur.com/Cozw6Iy.png)

so what about my solution? Also if the cone is completely hidden by the tiles, do you really need a cone under the tiles cylinder? can't you just use a lattice to deform?


text:
Constructing a hexagonal shape from quads (Bolt)
I want to model a bolt with a hexagonal inset (allen/hex key). The issue is, that I have not achieved this yet.
I have attempted multiple things, but they resulted in n-gons/tris or are not subdividable.
I would like to avoid using tris, as I know it is possible to construct something like this from purely quads.
Any help appreciated. Best regards!
Here is what I want to achieve - Just with clean geometry. (Made using boolean)

Here is a demo file incoprorating vklidu's solution and my correction!
Link to the demo file

Can add pictures or references of the shape you are trying to create? It's hard to guess it from your current post.

Create a 6 vertex cylinder, bevel its vertices:

Extrude outwards, then right click > LoopTools > Circle:

Fill the inner face:

Extude down the whole mesh:

Extrude down the inner face:

Bevel the edges:

Give it a Subdivision Surface modifier, shade smooth;

Hehe.. much neater than the previous version :)

yes, plus it's usable, lol... I think I've already answered this kind of question but I couldn't put my hand on it

Probably you can save some time ... Blender contains BoltFactory addon with Allen bit type included ...

select problematic part, Delete Faces

select hexagon and in this case Subdivide by 5
search for Bridge Edge Loops operator

for the bottom hexagon you can use topo like this (if you need avoid tris or n-gons)

for a bottom tris - Delete Faces

and search for Grid Fill operator

Thanks for the thorough explanation! Unless I misunderstood, the topology in your third picture still creates n-gons at the side of the inset. It is however possible to turn all this into quads! I have attached a proof-of-concept to the original post.

On second image you can see Tris at hexagon bottom hole so I connected corners in a quad topo. Sides are squares.


text:
How can I make this fog more dense in the middle?
I want to have the legs gradually disappear into the fog so how can I make the fog denser in the middle?
Here is the image:

Hello and welcome. While files, images, and external videos or links may be helpful additions they should not be the only way to obtain information about your issue. Don't make understanding your question rely on downloading a file, watching a video or visiting an external site. Use the builtin tools to upload images or gifs, along with thoroughly explaining the problem in written form so it can be indexed and searched for thus helping future visitors with similar issues.

You can use a Gradient (in Quadratic Sphere or Spherical mode) as factor in a Principled Volume or Volume Scatter node. Here I've used 2 cubes, one bigger, one smaller, to make the volume scatter effect denser:

Or as Gordon says, use a Gradient Texture, Linear type:

Especially with a clear direction to where the fog should be more dense like shown in the screenshot, a linear gradient could be useful too.

oh yes of course

Thank you, with some tweaking I was able to get it

@Elven_Randomness: Hi Elven, if the answer helped you, please click on the checkmark left of the answer. thank you.


text:
How do i interpolate over multiple keyframes?
How can I use the Interpolation modes like Bezier not just from one keyframe to the next but from e.g. keyframe 1 to keyframe 3 while still going to the place of keyframe 2 without messing with timing?

Hello, it's not clear what you mean, if there's a keyframe #2 then keyframe #2 will be played

well i can set the interpolation of keyframe one to be bezier then the animation will start slow then speed up then slow down again before the next keyframe. However i want it to only start slowing down at keyframe 3 or 4 or 5 instead of the very next one.

You can set it the way you want in the Graph Editor

maybe provide a file with a simple example, like an animated cube and the 3 keyframes you're talking about, and tell what you want to do?

not sure how to upload files here but i made a short gif : https://gifyu.com/image/Sc6iK          i want this path to be one smooth acceleration

Maybe also share the file? https://blend-exchange.com/

It should work with this kind of curve in the Graph Editor: https://zupimages.net/up/23/31/flok.jpg

You can move your keyframes, or add another one between two other to control how things happens between them... Whatever fits your needs. You can also use the breakdowner operator to create breakdown keys.

well yeah it would work with the graph editor but that would mean editing 6 graphs per keyframe per animation since im not trying to animate a cube in one dimention.                   As for L0Lock i dont understand how that helps my problem. Any additional keyframe have their own interpolation right? And the breakdowner things dont allow me to create new poses from what i can tell only shift between two which is just another way to time two keyframes but not more then two right?

I think I finally figured what you mean, and what you want to achieve is the default behavior: https://i.sstatic.net/f9aN6.gif Do you see how it doesn't make a stop at the top, but continues to move? If this is what you want, then you likely changed the default behavior somehow and we can help if you share your .blend in the mentioned blend-exchange

Okay your right. And when moving in one direction with bezier interpolation that does work. Though my question and example where somewhat lacking cause i didnt expect it to work like this. See what im trying to do is have the objects velocity not slow down regadless of changing directions. I also dont understand why when i reproduce your example but then change the interpolation to anything else it starts stopping in the middle.

You can't avoid stopping when changing directions, when you consider a single axis, because the velocity has to go through 0: https://i.imgur.com/XVNImwr.gif Perhaps you want a solution where the pathing changes (in the example the cube would start going e.g. a little up, then make a turn, going a little down...)

Do you mean you cant avoid as in blender cant? Because i just want constant acceleration. In your gif here the cube slows down before the turning point and then speed up after it stopped. What i want is that the acceleration just keeps going. Picture one blade of a rotor. Its changing direction constantly but still constantly accelerating. I have seen one way of doing this using a curve and telling the bone to follow said curve but i cant imagine there not being a way to just tell blender to use this keyframe as just a inbetween pose.

So you want constant magnitude of your acceleration but changing direction. The thing is, in order to go through given points, at a given time, you would need to calculate a path that satisfies those needs, and I think that's not trivial…

mhh but how do ppl animate circular motions using ik then? there gotta be some fast solution to this.

This commentary is getting out of hand :) . @hurensohn Please edit your original question with as clear a description as you can make of the final effect you are looking to achieve, in one case. The more general explanation of the meaning of interpolation modes will emerge from that, I'm fairly sure.

@hurensohn I'm bad with armatures but consider how a sine and cosine go through 0, and yet together they draw a circle…


text:
Same material, different result
After finishing the material (see middle) I applied it to the other objects next to it, but they don't "react", I have have tried the scale/UV Map stuff, without success, but it seems more like a bug from Blender or maybe my GPU is the problem ?
Blender version : 4.0
GPU : RTX 4070 Ti.
OS : Windows 11
CPU : i5 12400

If you suspect that it is a hardware bug, maybe it is best to share the file, and whoever is available will test it. In the meantime, try to switch the rendering device between CPU and GPU. You may also want to go to the settings under System and configure the Cycles Render Devices.

Maybe it's intentional, but is it ok that the Mix Shader node is not connected to the material output?

Thank you to each and everyone who took the time to help me. By the time I realized that my question has been answered I have solved the issue by disconnecting the Color Ramp from the Glass BSDF that can be seen in the second screenshot I posted.

Without the exact objects that you have in your scene I can just guess. But as @joshsanfelici already commented, the Mix Shader is not connected, so the only thing the material outputs is a Glass BSDF with an either completely smooth or completely rough surface... the Pointiness information with the Color Ramp.
First of all, to make the Pointiness work correctly, you need a dense mesh (I cannot see your meshes in the question) and even then it only works in Cycles. Otherwise the complete object will get a uniform color/value which is what happens here, I guess.
Now, but even then, why are they different? The pointiness of edges - or the uniform value the mesh gets in this case - and therefore the threshold when the roughness switches from smooth to rough depends on the different objects. I used slightly different objects and Color Ramp settings then you, but basically it is like in my example, here I have a cube and a kind of crystal, same material but the cube is rough and the crystal is smooth:

Moving the Color Ramp sliders a bit to the left makes both objects rough:

Now moving them to the right, suddenly both objects look smooth:


text:
How snap object to X, Y or Z-axis?
I am a Blender n00b and have this beginners question that I can't find an answer for.
I'm following this course by testedpancake on YouTube to model a car. In part 7 of his tutorial he is extruding the hood of the car to the Y-axis:
Model a 3d Car | part 7 | hood vents and topology examples
In my case I cannot get one point of the edge that I want to align with the Y-axis to snap to it. Please see the pictures below.
When I zoom in the vertice is not attached to the Y-axis
My question: how do I snap a vertice to the Y-axis?
Can somebody please help me out? Thank you!
EDIT: Here's the file: Dodge Challenger car
Selecting the edge to move to Y-axis

Having 2 points snapped to the Y-axis, but not really!

When I zoom in, the vertice is not aligned with the green Y-axis at all!

hello bushok, perhaps share your file so that we can check it: https://blend-exchange.giantcowfilms.com/

try activating clipping in the mirror modifier and pull the vertex all the way to the left and it should stuck to the middle.

Enable clipping in the mirror modifier and then try again. If you now move your vertices to the left they should stop when they touch the other mirrored vertices.

Thank you very much Valentin, that was it! Just checking a box.. :)


text:
Transparency problem
I have two layers of geometry for the eyes: The top one for the eyelids and the bottom one for pupils. This is what it looks like without the 2nd layer:

And this is what it looks like with both layers:

For some reason, the transparency that's only applied to the 1st layer is showing through the 2nd layer:

How do I fix this?
EDIT: .blend file download

Could you maybe share the .blend file or some more screenshot of the setup you have? It is hard to understand what geometry you are using and what for and how the shaders for it are made.

@MartinZ Added a link!

It seems you forgot to pack the textures, so I am not able to see them. I would make the eyelids with actual geometry, so they can be animated with shape keys or something like that, or I would animate the shader for the eyes itself (although I do not use Blender Render so I cannot advice on how to do this with it). It is still unclear to me what you intended to do with this as it is.

Just a guess but it's worth a try. It looks like the 'Transparency' box might  need to be ticked.  In the 1st layer's properties (cube icon at right) go right down to the "Display" tab.  It's in there. Tick or untick the Transparency box. If that doesn't work, try it for the 2nd layer.

@Edgel3D That did the trick! Thank you so much!!


text:
Bake after Principle BSDF
Some materials in Blender Kit can't be baked. Blender can make bake texture only with bsdf node. But when I use Ambient Occlusion or materials that use mix shader after Principle BSDF I can't connect it to new Principle BSDF, and it go raw line to Material Output. Because of it I can't bake correctly all materials. How to fix shader node to make bake materials.

object with material Rust, 2) object tried fit in Principle BSDF, 3) model baked and applied textures.

Baked with addon TexTools

Baked with Cycle bake color

It doesn't matter, which way I bake by addon or Cycle bake, result the same. It makes only BSDF, and if put mix shader between Material Output and BSDF, it will not anything good bake. For example here it doesn't bake Rust material from Blender kit, it bakes something black. But all material that have line from BSDF to Material output will make good bake.

What are you talking about? First of all, please define "bake" - what do you want to bake? You can bake properties of a material. Which ones do you want to bake and why? Secondly, obviously you cannot bake invalid node setups, and you cannot plug shader output to color input, because that makes no sense. It will not render, so it's no surprise it will not bake.

I want to bake one after one Base Color, Metallic, normal, roughness. But you can see first object has after Mix Shader to Material Output. But to bake before Material Output should be Principle BSDF. But you see if I put Principle BSDF between it has a lot of channels; Color, Metallic, ... But if first object bake it, it make third object, that black box.

Why do you need Principled BSDF for baking? Are you using any add-ons? I fail to follow what you actually want to do here. If you want to bake, you create an image texture, make it active, connect something to Material Output, chose baking options and bake. It doesn't matter what type of bake it is, just that it's what you need. You can bake Roughness texture using emission node and emit baking. Shader is important only if you need to bake some lighting effects.

Yes, I use addon TexTools. And if I use Cycle Bake by selected Image texture, result same.

You need a working material that you want to bake. A valid Material Output. Edit the question and provide all relevant information. If you use an add-on to bake and ask a question about baking, you have to mention that. How else are people going to know what you are talking about?

See this

Only Textools, not Blender, needs a material to finish by a Principled BSDF.
And this requirement does not mean you have to put a Principled BSDF at the end of any material that doesn't have one: it's unlikely to work. That Principled BSDF you plugged at the end can't receive a shader data in its color input.
But it means you have to adapt the whole material to function with a Principled BSDF at the end, or not use Textools for baking that material.
At least your material seems pretty straight forward, so adapting it seems a good option here. But on some more complex materials, it might just not be one.
Let's take this mockup:

What we essentially have in your case is just two Principled Shaders, each with their own settings, mixed together with a texture as factor. You could obtain the same result by having one Principled, but its settings coming from two sources mixed together with the same texture.
When the settings come from nodes, like the normals, you can simply add a Mix RGB node, set it to Vector, plug the two normal maps with the textures, and you're good to go:

When it's float values like the Metallic or Roughness settings, you can use a Mix RGB node, set it to Float instead of Color, and copy-paste the Metallic or Roughness from the Principled BSDF nodes before plugging the mix node, and using again the same texture as factor:

The final result is a material that properly terminates on a Principled BSDF as which Textools can bake properly:

It looks like you have no light sources in your scene. When you bake the Diffuse pass (as per your screenshots), then all diffuse light that gets reflected from your object is baked to the selected texture. If you have no light sources and the world is set to black, then the diffuse reflection from your object will be a uniform black.
Also lookout for hidden occluding geometries. In your screenshot I can see that you have a disabled Collection, but it has been my experience that sometimes geometries that are disabled in this way are still considered for rendering. It would be safer to toggle 'Disable for Rendering'.
The shader setup should not matter that much, you can be as creative as you like.
Hope this helps!


text:
Alpha 2.8 - Mirror in edit mode
I'm currently discovering the reworked UI of Blender 2.8. I have some kind of cube, cut in half, mirrored to a full cube again using the mirror modifier. In edit mode, I've noticed some changes that I personally dislike.
It could be a bug, a feature, or just a default setting:
I'm only seeing the half mesh that I'm able to edit, the other side is simply not shown. In previous blender versions, you could always see the mirrored part, here it is completely gone.
Also, if I'm using subdivision surface, I can only see the real model in edit mode, without the filter "applied".
Here are two screenshots showing a similar model in edit mode:

Do you know if this is just a simple setting?
Thanks

I'm aware this is all subject to change. But maybe I'm just missing a small setting.

Yeah that's probably the best thing to do. I don't do any serious work right now, just messing around. I've changed the title, because Beta is misleading.

But maybe it is just a setting I'm not aware of and someone knows a simple answer. Does it really hurt to have a topic about an upcoming release?

To me as another common user, 2.8 seems to be a very long slow process. I found this question due to having the same problem on alpha 2. :(

I would suggest that it's simply broken at the moment - the button on the modifier to 'Display modifier in Edit Mode' is still there, it just doesn't do what it's supposed to do right now.
I'm sure they'll get round to it eventually!


text:
How to control animation speed and direction in BGE
I would like to be able to control an object moving along a path in the BGE. I have looked at the Action actuator, but that seems to just play the animation. I want to be able to control the speed and direction of the object as it moves along the path. Something like a car going down a road.
Is there some way to accomplish this??

I could not find any info and this, so since i figured it out, i would post the answer. I used logic block and a python scrip. The example is not for a follow path, but just a simple cube animation.
The game goes as follows:
Press space key to start animation, press again to stop the action.
Press the F key to speed up the animation, and press the S get to go slower.
I included some images.
import bge

def main():
# max frame of animation
maxFrame = 100

cont = bge.logic.getCurrentController()
own = cont.owner

frameAct = cont.actuators['Frame']

currentFrame = own.get(frameAct.propName)

# limit speed to between 1 and 10
speed = own['speed']
speed = max(1,speed)
speed = min(10,speed)

speedInc = (0.10*speed)

currentFrame = currentFrame + speedInc

if currentFrame > maxFrame:
    currentFrame = 1

frameAct.value = str(currentFrame)
cont.activate(frameAct)

main()

Note: When using this on a follow path constraint, the action must be baked into key frames for this to work.


text:
Clothes pass through the mesh
My clothe mesh pass through my character mesh in clothe simulation. How can I change that ? I precise that I can't hide the body inside because I want a clothe a little bit transparent to obtend more realism.
Initial form :

Aspect after some frames with the movement of the simulation clothe :

Thank for your attention !

You have to select your body, then go to the Physics menu and click Collision so that it can interact with the cloth


text:
Dark spots on metallic objects

As title states I am having the problem shown in the image. Any idea why this is happening and any solution?

If you mean the cube it looks like a wrong UV mapping.

please show your UV map for the cube


text:
i get trouble finding my fluid, i'm a beginner
i was following this tutorial on youtube https://youtu.be/3lvpNM1DrYU and i'm having trouble finding my fluid options, you may see it on 5:58 in the link i shared
the picture bellow is how my settings look like.
is there any possible way to fix mine? :(

Hello :). The tutorial is using the old fluid system. You'll need Blender 2.81 to follow it precisely: https://download.blender.org/release/Blender2.81/

hi, oh i understood, that's why mine isn't the same as the tutorial! thank you so much btw!


text:
Why node socket shape is different (diamond vs circle)?
I am not able to figure out why these node socket looks different.

The top is a shader or composite node, the bottom is geometry node.

Related: Why is there a red line when I try to connect one node to another?

Diamond socket means that the data is different for each point, circle socket means that the data is single for all points. The diamond socket with the dot simply means that you can use it either as diamond or as circle socket (you can plug in data from circle and diamond sockets, and when you do so, it changes the shape to one of them)
Note also, that circle sockets corresponds to solid connections, and diamond to dashed:

You can pass data from circle to diamond, but not the oposite, it is not allowed:


text:
Shader problem after mirror modifier
After adding mirror modifier the other part of the chair leg has some shading problem.
I have tried :

check face orientation
2.recalculate normals

Please help.
Shade smooth :
Shade flat :
Wireframe :
Face normal :
Blend file : https://pasteall.org/blend/eb989c31e7494803b4c9896fd88533b9

hello, please share your file: https://pasteall.org/blend/

@moonboots Added in question. Sorry, should have attached while posting question.

I don't see the same problem on my own computer but maybe apply the scale and in the Object Data panel > Geometry Data > click on Clear Custom Split Normals Data?

@moonboots Applying scale solved the problem. (Custom split normal is required for my model, So I did not cleared it). Please add it as an answer, I will close this question. Thanks a lot.

Your object is stretched a lot. Apply the scale with CtrlA).

Thanks a lot. You saved my day.

Make sure your object normals are correct. To do this, select the whole object in edit mode and press shift + n.
Also check the geometric data of the object through the object data properties section and delete this section if there is any information

Object normals are correct, I have checked face orientation, and also recalculated normals. BTW applying scal solved the problem.


text:
How to generate random number for whole geometry in geometry node?
When I am trying to generate random rotation for geometry, the sockets are not compatible.
How to generate random number here?

.. bearing in mind that the components of Euler rotations are in Radians, so if you want  a random angle  from the full span around any axis, that would be something with a range of 2*pi. ( -pi -> pi... 0 -> tau... etc)

You can also do this, with an Attribute Statistic node :

Note I'm using a Mesh Line node with a count set to 1 to instantiate a single vertex so the field is evaluated only once to avoid potentially costly computations.
If you want to simplify things afterwards you can select the leftmost three nodes and Node > Make Group or CTRL +  G. Then link the group input to the seed, min and max to have a reusable node group.

Then if you want to spawn a new group instance, go to Add > Group > Group Name.

one way to achieve what you want is this node setup:

Thanks for the workaround. Do you think that there should be a node to generate Random value for whole geometry? Or, does it not make sense have such node?

I am not sure about it. I think the developers must have had something in mind.


text:
VFX explosions and shadowcatchers
I'm attempting to render an explosion to be composited into live action. The explosion is made using Blender's smoke simulation with an emissive volume shader as described in tutorials like this one. I want the light of the explosion to be cast on the live-action walls but have not found a good way to do this.  I'm hoping someone here has a clever solution or can point to an incorrect conclusion.  So far my impression is:

Cycles shadowcatchers do not catch light from emissive volumes, only from emissive meshes and regular lights
Eevee emission can be captured for use with an Eevee-style shadow catcher like the one described in this tutorial), using a light probe, but this isn't practical for animated sequences since you'd have to recalculate the light probe every frame, and anyways it doesn't seem to work for emission from volume shaders
Eevee Next (Eevee in Blender 4.2) can capture emissive surfaces using its new Global Illumination!  But I haven't gotten this to work with emissive volumes, only emissive surfaces, so I have the feeling emissive volumes are not supported yet.

I have dabbled with trying to use Geometry Nodes Volume-to-Mesh to convert my simulated explosion to a mesh surface that I could use to cast emissive light, but it seems like Geometry Nodes does not yet have access to fluid/gas simulation volume data yet.
So far my best solution is to use Cycles to cast light onto a regular (non-shadowcatcher) surface and then I'll composite that onto the live footage with an Add instead of a Multiply.  Curious to know if anyone has any other clever solutions, or if I've missed anything in the thwarting limitations listed above.

Shadow catchers don't really catch light, it catches the difference between white and the surface. Meaning it catches tints and shadows. I think you would have to render a projected version of the shot, so no use of the original footage besides as a texture. Not sure though.

This question is similar to: Is there a way to utilize emissions in VFX?. Basically, use layers and render different layers and combine them using the compositor

Why do you think the Shadow Catcher does not catch emissive lights in Cycles? You have to use it as a pass in the Compositor, not directly in the render. Here is plane as shadow catcher below a cube which has a bright red emission. The shadow catcher pass multiplied with a background image lights up the background with the red emission where the shadow catcher plane is lit by the cube: emissive light catcher

To clarify my initial question, it seems that Blender's shadow catcher does not catch emissive light from vdb volumes only, and that is my issue.  I've updated the question for clarity.
This is indeed a duplicate question and a solution is described here: https://blender.stackexchange.com/questions/140460/is-there-a-way-to-utilize-emissions-in-vfx
A clever alternative solution, given in the context of Embergen but applies to other volume emission compositing scenarios, is given at the end of this YouTube.


text:
programmatically create tracking markers and set per frame coords?
I would like to import a series of coordinates for multiple "points" for multiple frames but I can't find examples.
I saw how I can add markers with bpy.ops.clip.add_marker, but I don't understand how to change coordinates over time, is it possible?

Found MovieTrackingMarkers.insert_frame
clip = bpy.data.movieclips[0]
width = clip.size[0] # 848
height = clip.size[1] # 480
bpy.ops.clip.add_marker(location=(424.0/width,240.0/height))
bpy.data.movieclips[0].tracking.tracks.active.name="test"
clip.tracking.objects[0].tracks[0].markers.insert_frame(10, co=(212.0/width,120.0/height))
clip.tracking.objects[0].tracks[0].markers.insert_frame(20, co=(106.0/width,110.0/height))
clip.tracking.objects[0].tracks[0].markers.insert_frame(30, co=(53.0/width,55.0/height))

Well, that was fun:
use dlib and opencv to track face landmarks


text:
Armature | Rig Smooth bends
I'm using a Minecraft character rig which only has sharp bends.
I'd like to change them so that there are smooth bends like in this rig:

You may do it by increasing the Curved Bones segments number or using the Spline IK bone constraint.

In the Armature Data header change the bone display type to B-Bone. Then in the Deform panel of the Bone header increase the segments number for each bone. Play with Ease In and Ease Out values to control the smoothnes of a bend.


text:
How do I add multiple shapes to one skeleton
Using Avastar, how do i add multiple second life shapes to one skeleton as displayed in this video Creating "Standard" sizes for the Second Life avatar using Blender's Shapekeys

Exactly the same as attaching one shape to a skeleton. Make sure all the shapes are selected, then select the skeleton (i.e. make sure the skeleton is the active, more brightly outlined object). Then hit Ctrl+P to mark the skeleton as parent of the shapes.

I should have mentioned that i also work with Avastar and for some reason it doesn't allow me to load in multiple shapes, it swaps the shapes in stead of letting me add them up..

What is Avastar? If you have problems with an add-on, ask the author of the add-on.

It's an add-on designed for rigging Second Life shapes


text:
Shape Key 10 is not working well
Well, I was doing the model's facial expressions with the shape keys but suddenly adding the number 10 happened this to me. All others are fine, but after the 10, happens this and I do not know what to do...

Download file: http://www.mediafire.com/file/bzts92ted9w5mx7/AAA.blend

@cegaton okay I added a download file


text:
How can I flip one texture with a mirror?
I'm testing some textures with this model but when I press the U button it flips all the textures and I only want to flip the eyes textures. help

Why do you want to flip eyes texture? It's looking quite logical on the first screenshot. As to question itself you can't flip only part of the texture with Mirror modifier only. Apply it and do whatever you want on UV map or assign eyes on another material

or what you could do would be changing the texture


text:
Glossy object looks different in rendered view (Cycles)
A glossy  object looks perfect in material preview ,but when I come to render mode (I try to use cycle), everything looks completely different.

Your environment is grey hence no reflections... It looks different in the preview because there is an hdri already set for convenience.

https://blender.stackexchange.com/questions/170533/which-mode-should-i-trust-for-lighting


text:
How do I Download an External File from URL and Display Progress in a Panel without blocking the UI?
I've read the following answers already on SE, but I cannot yet seem to replicate the end result I need in Blender 2.71.

https://stackoverflow.com/questions/13485720/blender-python-scripting-trying-to-prevent-ui-lock-up-while-doing-large-calcula/16744008#16744008
Blender not responding while running my script
Blender UI Multithreading Progressbar

I'm running a panel script that uses an operator button to download a file from an external URL. I've not yet found a way to do this without blocking the UI.
I've tested modal operators and used multithreading, no luck yet. Can anyone demonstrate that this is actually possible?
If it is possible, I would then use a modal operator timer to check on the progress and update a label in the ui panel.
Here's my attempt via a modal operator timer similar to the first link in the list.
import bpy
import sys
import urllib
from urllib import request
from urllib.request import urlretrieve

def reporthook(blocknum, blocksize, totalsize):
    readsofar = blocknum * blocksize
    if totalsize > 0:
        percent = readsofar * 1e2 / totalsize
        s = "\r%5.1f%% %*d / %d" % (percent, len(str(totalsize)), readsofar, totalsize)
        sys.stderr.write(s)
        if readsofar >= totalsize: # near the end
            sys.stderr.write("\n")
    else: # total size is unknown
        sys.stderr.write("read %d\n" % (readsofar,))

class ModalTimerOperator(bpy.types.Operator):
    """Operator which runs its self from a timer"""
    bl_idname = "wm.modal_timer_operator"
    bl_label = "Modal Timer Operator"

    _timer = None
    _updating = False
    _download_done = False

    def do_download(self):
        print("starting file download")

        #actual url and local path removed for privacy
        urlretrieve("REMOTE_URL", "LOCAL_DEST", reporthook)

        self._download_done = True

    def modal(self, context, event):

        if event.type == 'TIMER' and not self._updating:
            self._updating = True
            self.do_download()
            self._updating = False

        if self._download_done:
            self.cancel(context)

        return {'PASS_THROUGH'}

    def execute(self, context):
        wm = context.window_manager
        self._timer = wm.event_timer_add(2, context.window)
        wm.modal_handler_add(self)
        self._updating = False
        return {'RUNNING_MODAL'}

    def cancel(self, context):
        wm = context.window_manager
        wm.event_timer_remove(self._timer)

def register():

    bpy.utils.register_class(ModalTimerOperator)

def unregister():
    bpy.utils.unregister_class(ModalTimerOperator)
    bpy.utils.unregister_module(__name__)

if __name__ == "__main__":
    register()

bpy.ops.wm.modal_timer_operator()

Next, I'd try activating an instance of headless Blender that will silently work in the background.

Okay, I think I've found the solution to this issue.
Instead of calling a single download file command with urlretrieve, I opened a remote urllib.request using the chunk size argument, as well as opening a local file for writing. I used a modal operator to read a new chunk from the URL and write the chunk to the file. Keeping the chunk size around 16kB seemed to work well.
In order to get the download size progress updated to a panel label, I needed to use a second modal operator running to get the label to update.
Curiously, in the Event.Timer statement of the second MO, I needed to update any random property in the scene context to get the Status Label to really update properly. Perhaps someone could explain that bit further.
This is what I used to trigger the update in the second MO:
bpy.context.window_manager.name = bpy.context.window_manager.name

Here's my code sample, feel free to comment:
import bpy
import sys
import urllib
from urllib import request

scn = bpy.context.scene
fileDwnProgress = ""
url = "REMOTEFILEURL"
theFile = "LOCALFILEPATH"

def strMsgLabel_Get(self):
    global fileDwnProgress
    return fileDwnProgress

bpy.types.Scene.strMsgLabel = bpy.props.StringProperty(
    name="Status",
    description="Message Label",
    get=strMsgLabel_Get,
    set=None)

class OBJECT_PT_TESTPANEL(bpy.types.Panel):
    bl_label = "DOWNLOAD TEST PANEL"
    bl_space_type = "NODE_EDITOR"
    bl_region_type = "UI"
    bl_context = "object"

    def draw_header(self, context):
        layout = self.layout
        layout.label(text="", icon="INFO")

    def draw(self, context):
        layout = self.layout
        row = layout.row()
        row.label(text=scn.strMsgLabel)

class mdFileDownload(bpy.types.Operator):

    bl_idname = "wm.md_file_download"
    bl_label = "File Download"

    _timer = None
    _transferring = False
    _download = False
    _chunkSize = 16 * 1024  #(16kB seems good chunk size)
    _fileSize = 0
    _fp = None
    _req = None
    _chunk = None

    def modal(self, context, event):

        global fileDwnProgress
        global url
        global theFile

        if event.type == 'TIMER' and not self._transferring and not self._download:

            self._fp = open(theFile, 'wb')
            self._req = urllib.request.urlopen(url)
            self._transferring = True

        if event.type == 'TIMER' and self._transferring:

            self._chunk = self._req.read(self._chunkSize)

            if sys.getsizeof(self._chunk) < self._chunkSize:
                self._fp.write(self._chunk)
                self._fileSize += self._chunkSize
                self._transferring = False
                self._download = True
                self._fp.close()
            else:
                self._fp.write(self._chunk)
                self._fileSize += self._chunkSize

            progress = str(round((self._fileSize/1024/1024),1)) + " MB"
            fileDwnProgress = progress

        if self._download:
            fileDwnProgress = "Download complete!"
            self.cancel(context)

        return {'PASS_THROUGH'}

    def execute(self, context):
        # print(var)
        wm = context.window_manager
        self._timer = wm.event_timer_add(0.01, context.window)
        wm.modal_handler_add(self)
        self._transferring = False
        return {'RUNNING_MODAL'}

    def cancel(self, context):
        wm = context.window_manager
        wm.event_timer_remove(self._timer)

class mdDownloadMonitor(bpy.types.Operator):

    bl_idname = "wm.md_download_monitor"
    bl_label = "Download progress monitor"

    _timer = None

    def modal(self, context, event):

        if event.type == 'TIMER':
            #this is required to trigger the update
            bpy.context.window_manager.name = bpy.context.window_manager.name

        return {'PASS_THROUGH'}

    def execute(self, context):
        wm = context.window_manager
        self._timer = wm.event_timer_add(0.01, context.window)
        wm.modal_handler_add(self)
        bpy.ops.wm.md_file_download()
        return {'RUNNING_MODAL'}

    def cancel(self, context):
        wm = context.window_manager
        wm.event_timer_remove(self._timer)

def register():

    bpy.utils.register_class(OBJECT_PT_TESTPANEL)
    bpy.utils.register_class(mdFileDownload)
    bpy.utils.register_class(mdDownloadMonitor)

def unregister():
    bpy.utils.unregister_class(OBJECT_PT_TESTPANEL)
    bpy.utils.unregister_class(mdFileDownload)
    bpy.utils.unregister_class(mdDownloadMonitor)
    bpy.utils.unregister_module(__name__)

if __name__ == "__main__":
    register()

bpy.ops.wm.md_download_monitor()

Perhaps Campbell (@ideasman42) or Brecht (@brecht) could chime in and explain why this solution works, and better yet, if there is a better way to accomplish this.


text:
Strange Corrupted Frame ( in .MP4 Render )
So, I rendered a
*Short animation (2 seconds) in my macbook pro (M1 2020) with following specs:
-Cycles (CPU)
-128 Samples
-Adaptive sampling
-NLM Deonoiser
-Ffmpeg Video (file format)
-MPEg-4 (Encoding /container)
*The Scene contains, as you can see in the image appended, following:

-Skull, Plane (Mesh)
-Second Skull (as Emitter for Smoke)
-Smoke Domain
-Lights
*What the heck is this corrupted frame?
Do you guys have any idea what could cause a Frame look like that? during the video (2 seconds) i saw this 2 times.
]1

Please don't post URLs for image.  Please include the images directly in your question.

didnt know u could do that, thx lol


text:
How to get rid of black curve lines
Anyone please help me to deal with these lines, I don't know how these lines gets formed.I simply want to get rid of them. You can see those short random lines selected in the image.I way a way to fix them.

those lines are caused by some topology problems, look closer to those areas, go to edit mode, x ray mode and look closer, can you add screen of what you will see? There are probably not connected vertices, flipped normals or missing faces

You're currently in x-ray mode Does pressing ALT-Z get rid of them?

nope ALT-Z didn't work.

I added one more screen, hope this helps to get a clear view about my problem.

well I got the way, I guess I have to delete those vertices. THanks for helping me!


text:
FBX export modifies IK bones
I have made a model with armature and animated 2 actions, idle and walking, but when I export to fbx the walking animation gets weird bellow are the original blend file and the same model after exporting and importing, (I am showing in blender but I intend to use in unity, and the import in unity has the same weird animation)
Original:

Exported (and imported):

I have this Exporting settings, (I tried without apply transform, without nla strips and with add leaf bones)

I have this on my scene:

The transforms of all mesh and bones:
(not sure I should select everything but individually they are all applied with location and rotation at 0 and scale at 1)

Just in case the affected bone transforms:

Note: Although I had other issue before this IK bones getting larger, I had a second armature on top, that issue I solved by deleting the NLA Tracks action stash, there was an animation there (I might have changed some settings trying to solve this issue and now is causing the new issue)

Please share your blend file https://blend-exchange.com

I can't really tell for sure without the file but it looks like you scales aren't locked in at 1. You should try applying the transforms in the viewport with ctrl + A and hit Apply all transforms this should be done for your armature and your mesh. Going from blender to unity or unreal can be a little tricky if this isn't done. When you do this other problems may arise you may after to do some reparenting or animating to make things right.You may have to do this with the bones that seem to be growing in size but usually doing it on the whole armature fixes the issue! Let me know if this works.

sorry for the delay, they are all applied, I double checked and I had a slight position change but it wasn't the issue it was just some modification I did after the fact, I apply all transforms again now and its still the same.

Maybe instead of using the NLA you can try storing the animations in the action editor and importing them separately? I also notice that you're using WXYZ rotations, try switching the euler to XYZ instead. the fourth rotation gets a little wonky sometimes


text:
Traceback (most recent call last): BlenderGIS
I'm using the BlenderGIS add on. When importing digital terrain models (or DEMS) which are ESRI ASCII Grid (.asc) files, I get this error message.
I'm pretty new to blender but trying to create 3D maps as it seems to be better than QGIS currently so any help is greatly appreciated. Thanks

Can you screenshot the entire traceback and add it to your question?

Please clarify your specific problem or provide additional details to highlight exactly what you need. As it's currently written, it's hard to tell exactly what you're asking.

You can find the entire traceback printout by going Window > Toggle System Console. Please copy / paste it in its entirety :)

Also make sure your problem isnt answered in https://github.com/domlysz/BlenderGIS/issues/305 or https://github.com/domlysz/BlenderGIS/issues/265 or https://github.com/domlysz/BlenderGIS/issues

@MartyFouts Image now in description. Hopefully this helps

@Community I've made the post a bit more specific now.


text:
Beginner in Blender
So, I just got blender and I don't know what I'm doing. How to get started with blender? Tutorials to watch and whatnot, somebody help me please I don't want to be groping about in the dark I need somebody to point me in the right direction

Hello and welcome. I would advise you to start with the tutorials available on the Blender website, which you can also find on their Youtube channel here: https://www.youtube.com/watch?v=kes2qmijy7w&list=PLa1F2ddGya_8V90Kd5eC5PeBjySbXWGK1

you have a lot of tutorials on youtube, just type "blender tutorial beginner" or something like that

The question is too broad and can only get primarily opinion based answers. It is not ideal for this platform. I think you will get better general advice on forums like Blenderartists.org. The question will most likely get closed eventually, but don't take this the wrong way. You should ask all the more specific questions that you encounter during your learning process. It's a good place to get good detailed answers for more specific things quickly.

Cool thing with Blender is that it's used for many things from ocean simulations to making video game assets, the big thing I found with people is when they open it they are like super confused with the amount of buttons to press just know a lot of it you wont need if you're specializing and if not there is this cool "cheat sheet" which will be linked first.

https://www.giudansky.com/downloads/learnwithaposter/blender-poster-infographic/blender-infographic-SM-1280.png
This is for whole Blender now if you can have it printed and set on the side while you're working.
https://www.youtube.com/watch?v=LLV7h-WLIx0
This explains most of the UI and it's settings.
When you get that sorted out start with
https://www.youtube.com/watch?v=VT5oZndzj68&list=PLjEaoINr3zgHs8uzT3yqe4iHGfkCmMJ0P
This is a whole playlist from Blender Guru covering everything, from UI to Lighting and should get you to speed with the software when you're finished you should be covered on most things and then you can decide if and where you want to specialize.


text:
Texture not showing using Project from View
[Solved] Using 'Project from View', my second texture is not showing on the model.  The first texture IS displaying.  I used UVunwrap for the first texture.  Not sure what I am missing.  Any help would be greatly appreciated.

1st texture you can see on the window/door frames....second texture to be entire building (not showing).

You obviously have not set the texture for the "white" material (Material), but for the "wooden" material (Material.002) only. Just add the texture to the white material.
Or if you don't need the white material, just remove it by selecting it and clicking the (-)-button to the right side. Since you would have then just one material, everything of this object should then be made of that one material.
I hope I could help!

That did the trick...thanks so much.  New to blender and its these little simple things I miss.

btw...I used option two above to resolve the issue...thanks again.


text:
Python: bmesh.verts not loading all vertices of mesh
As the title says, I am using bmesh.verts to load in all the vertices of a mesh to then check if their coordinates are within a certain box, and if they are select them. The problem is that the function seemingly doesn't load in all of the vertices of the mesh, but only roughly a couple tens of thousands when I have over a million vertices in the mesh. I figured this out by counting the amount of vertices where loaded in by the function at hand.
Is this a problem that can be solved somehow? Is this dependent on the amount of RAM used or some other memory related issue?
Important notice: This works perfectly fine if you copy and paste each command into the python console, but does not work when the script is run by itself.
This is the syntax:
def SelectVerticesInBound(object, vector1, vector2):
    # get the mesh data from the object reference
    mesh = object.data
    # get the bmesh data
    if mesh.is_editmode:
        bm = bmesh.from_edit_mesh(mesh)
    else:
        bm = bmesh.new()
        bm.from_mesh(mesh)
    print(len(bm.verts))
    # cycle through all vertices
    for vert in bm.verts:
        # check if the vertice is in the bounding vectors
        # if yes, select it
        # if no, deselect it
        if(IsInBoundingVectors(vert.co, vector1, vector2)):
            vert.select = True
        else:
            vert.select = False
    # update bmesh to mesh
    if bm.is_wrapped:
        bmesh.update_edit_mesh(mesh, False, False)
    else:
        bm.to_mesh(mesh)
        mesh.update()
    # trigger viewport update
    bpy.context.scene.objects.active = bpy.context.scene.objects.active
    # checks if a supplied coordinate is in the bounding box created by vector1 and vector2 and relies on vector1 being the "smaller" vector of the two
    def IsInBoundingVectors(vector_check, vector1, vector2):
        for i in range(0, 3):
            if (vector_check[i] <= vector1[i] or vector_check[i] >= vector2[i]):
                return False
        return True

Is that a million verts without modifers? Could be an issue with edit mode. In UI if you edit one object and change active object to another  via code in console it doesn't work as expected.  Prob needs an edit mode toggle operator (yuck)  Not a fan of one mode suits all bmesh code.  Suggest instead passing bmesh to method, akin to a bmesh operator. Handle the saving outside based on mode.  On a style side vert.select = sometest(vert) saves the need for if then true else false.

I thought this handled the edit mode saving issue: ´if bm.is_wrapped:
bmesh.update_edit_mesh(mesh, False, False)
else:
bm.to_mesh(mesh)
mesh.update()
# trigger viewport update
bpy.context.scene.objects.active = bpy.context.scene.objects.active´
Otherwise, I don't really understand what you suggest I might do, I'm quite new to the scripting realm of Blender. This is a borrowed solution from a while back, so I suppose it might not work now.


text:
Why are my faces different colors with the same material on them?
I don't know why this is happening is it because of the light? Something new with how lights/shadows work in 2.8? This happend on the 2.8 Candidate 1 and 2. I have plane with emission as light in this project. You can clearly see that faces are different. This never happend to me.
This is cube mesh with verteces merged in center to create a blade.
I tried flipping normals, playing with light and the object but nothing worked.

EDIT
After playing with light some more I got to the point on last picute. I just upped the strength of the lights. Didn't really help you can just see it less.

If I understand well the question, you're using 'Lookdev' rendering in the first 2 images. This means that light is not constant around as lookdev is based on a HRDI environment texture. Lookdev rendering = second button from the right on the upper right corner of the 3D view.

In rendered and solid view I get the same problem.

I will add another render picture.

I think I see what you mean. There is a section in the tip of the dagger that is ever so slightly brighter. I'd need to see the wireframe to check what causes this.

Gonna add it now.


text:
Armature Disappeared
I was working with my character earlier today, saved it and everything (I'm 100% sure because I've been working on it for a couple of days now) and after switching into rendered view-port mode for the first time on that file (since I was done with modelling and rigging) and switching out of it, my armature suddenly disappeared. I've checked the Hide option, checked the layers, checked the bone layers, checked even Google and other Blender Stack Exchange questions but nothing worked. I'm not sure what's going on, I've made many other characters with rigging before but this has never happened to me before. I didn't delete them, because the armatures are still visible in the outliner. Even when I enter edit mode, the armature is still invisible. Please help me!
Here's the .blend file:

You have the Only Render option enabled. Uncheck it in Display panel of the properties shelf (N).

In Edit Mode you can see your bones right? If you select a bone in Edit Mode and then go to Object Mode you can go to the bone property, (note not the armatures properties, the individual bone property the green button) and select Viewport Display, something called hide will show up only in the Object Mode. Uncheck it.


text:
How can I assign different colors in a single material using vertex groups?
I have a material with 8 different colors and my object has 8 different vertex groups. All of the vertex groups have assigned locations on the mesh (robot head). How can I make it so the "HeadWhite" labeled vertex group is colored white (node-labeled), the "HeadLightGrey" labeled vertex group is colored light grey (node-labeled), and so on, within the same material?
EDIT: I'm using diffuse shaders in the picture below as an example, which I placed there for people to test. Once this is answered, I'm going to replace the diffuse shaders with multiple textures and other shaders, so I can't use something like Vertex Colors to do the job.

Related: https://blender.stackexchange.com/questions/516/add-different-materials-to-different-parts-of-a-mesh

@cegaton I actually wanted a variety of different shaders and textures, I'll add that to my question.

@PaulGonet Thanks, but that isn't exactly what I'm looking for. I want the colors all within ONE material.

That will be possible only if you convert vertex group to vertex color by e.g. Weight And Color addon by @Chebhou and then use that factor from Shift+A>Input>Vertex Colors.

@cegaton I want to be able to texture paint stuff onto the robot head, but you can't have multiple materials for texture painting.


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

Also see https://blender.stackexchange.com/questions/65454/blender-player-on-playstation-4-psvr/65557#65557

It doesn't really matter whether this is VR game or not, it does matter which end devices are you going to orient. If your question is about what game engine to use for Android and iPhone support then Unity will work. You do not need specific Blender file format (.blend) to transfer objects to game engine; if textures are baked and you know how to setup game engine materials it won't be a problem.

Alright, I have little experience with Unity so I might watch some tutorials. I thought there might have been an easier way, you know - like just simply pressing a button and the whole blender file is imported to Unity without changing anything.

There was a project called BlenderPlayer for Android, which let you run .blend files and even develop games on an Android device:
https://www.blendernation.com/2012/06/26/blenderplayer-for-android/
But this has been discontinued. I'm not aware of any other way to export Blender games as mobile apps.
You might also want to research this, but I'm sorry I don't know more detail about it https://www.youtube.com/watch?v=U8RzsJfh3Gc


text:
Why Does Blender Keep Crashing When I Try to Run a "Mesh Object From Scratch" Script?
I'm trying to create a cylinder with vertices all throughout the tubing. A normal cylinder does not have these vertices, so I decided to create a mesh object from scratch. After finally cleaning up a few logic and syntax errors, I clicked "run scipt" and Blender crashed. This keeps happening every time I run it.  I'm convinced that I might need to use bmesh, but I don't quite know how. Here's the code:
import bpy
from math import pi, cos, sin

radius = 1
length = 4
slicesAcross = 3
slicesAround = 4
verts = []
edges = []
faces = []
for i in range(slicesAcross):
    for j in range(slicesAround):
        angle = 2*pi*j/(slicesAround-1)
        v1 = slicesAcross*(i/slicesAcross - 1)
        v2 = radius * cos(angle)
        v3 = radius * sin(angle)

        verts.append([v1, v2, v3])

#want 01, 12, 23, 30
#     45, 56, 67, 74
#     89, 910, 1011, 118
for i in range(slicesAcross):
    for j in range(slicesAround):
        index1 = i + j
        index2 = i + j + 1
        if index2 == (i+1)*slicesAround:
            index2 = i*slicesAround
        edge = [index1, index2]
        edges.append(edge)
#for i in range of number of faces (added 2 for the two circle faces)
for i in range(slicesAround*(slicesAcross - 1) + 2):
    face = []
    if i == 0:
        #make face out of first slicesAround edges:
        for j in range(slicesAround):
            face.append(edges[j][0])

    elif i == slicesAround*(slicesAcross - 1) + 1:
        #make face out of last slicesAround edges:
        for j in range(slicesAround):
            face.append(edges[slicesAround*(slicesAcross - 1) + 2 - slicesAround + j][0])
    else:
        #make face out of two opposing edges:
        for j in range(slicesAround*(slicesAcross - 1)):
            #want to connect edges j and j + slicesAround
            face.append([edges[j][0], edges[j][1], edges[j + slicesAround][0], edges[j + slicesAround][1]])

    faces.append(tuple(face))

mesh = bpy.data.meshes.new("MultiplexCylinder")
multiplexCylinder = bpy.data.objects.new("MultiplexCylinder", mesh)
bpy.context.collection.objects.link(multiplexCylinder)
mesh.from_pydata(verts, [], faces)

EDIT: Here's a picture of what it should look like:

EDIT: Script has been completed!:
import bpy
from math import pi, cos, sin

radius = 1
length = 4
slicesAcross = 5
slicesAround = 5

verts = []
edges = []
faces = []
for i in range(slicesAcross):
    for j in range(slicesAround):
        angle = 2 * pi * j / slicesAround
        v1 = length * (i / (slicesAcross - 1)) - length/2
        v2 = radius * cos(angle)
        v3 = radius * sin(angle)

        verts.append([v1, v2, v3])

        index1 = slicesAround * i + j
        index2 = slicesAround * i + j + 1
        if index2 == (i + 1) * slicesAround:
            index2 = i * slicesAround
        edge = [index1, index2]
        edges.append(edge)

# for i in range of number of faces (added 2 for the two circle faces)
for i in range(slicesAround * (slicesAcross - 1) + 2):
    face = []
    if i == 0:
        # make face out of first slicesAround edges:
        for j in range(slicesAround):
            face.append(edges[j][0])

    elif i == slicesAround * (slicesAcross - 1) + 1:
        # make face out of last slicesAround edges:
        for j in range(slicesAround):
            face.append(edges[slicesAround * (slicesAcross) - slicesAround + j][0])

    else:
        face = [edges[i - 1][0], edges[i - 1][1], edges[i - 1 + slicesAround][1], edges[i - 1 + slicesAround][0]]

    faces.append(tuple(face))

mesh = bpy.data.meshes.new("MultiplexCylinder")
multiplexCylinder = bpy.data.objects.new("MultiplexCylinder", mesh)
col = bpy.data.collections.get("Collection")
col.objects.link(multiplexCylinder)
mesh.from_pydata(verts, [], faces)

can you please share a link to the image of the shape you are trying to replicate?

do you get any error messages or stack traceback?  Those might be useful.  I would speculate that your call to from_pydata is crashing because you've somehow fed it bad input, but it's hard to tell just by looking.

@Aster17 Image uploaded! I think there's an issue with my vertices or faces. I'll keep trying to debug.

@MartyFouts The system console isn't displaying any errors. I think you're right. I tried creating a simpler mesh object (cube). Feeding the from_pydata call also caused blender to creash upon bad input. However, with correct input, it ran.

If you start Blender from the command line you get this:

TypeError: an integer is required (got type list)
Traceback (most recent call last):
  File "\Text", line 59, in
  File "c:\Program Files\Blender Foundation\Blender 2.93\2.93\scripts\modules\bpy_types.py", line 485, in from_pydata
    self.polygons.foreach_set("vertices", vertex_indices)
TypeError: couldn't access the py sequence
Error: Python script failed, check the message in the system console

Error   : EXCEPTION_ACCESS_VIOLATION
Address : 0x00007FF65851CA70
Module  : blender.exe
Thread  : 00004284

If we print the faces list before the call to from_pydata():

print(faces)
mesh.from_pydata(verts, [], faces)

You can see your list generation didn't go as planned:

[(0, 1, 2, 3), ([0, 1, 1, 2], [1, 2, 2, 3], [2, 3, 3, 4], [3, 0, 4, 5], [1, 2, 2, 3], [2, 3, 3, 4], [3, 4, 4, 5], [4, 5, 5, 6]), ([0, 1, 1, 2], [1, 2, 2, 3], [2, 3, 3, 4], [3, 0, 4, 5], [1, 2, 2, 3], [2, 3, 3, 4], [3, 4, 4, 5], [4, 5, 5, 6]), ([0, 1, 1, 2], [1, 2, 2, 3], [2, 3, 3, 4], [3, 0, 4, 5], [1, 2, 2, 3], [2, 3, 3, 4], [3, 4, 4, 5], [4, 5, 5, 6]), ([0, 1, 1, 2], [1, 2, 2, 3], [2, 3, 3, 4], [3, 0, 4, 5], [1, 2, 2, 3], [2, 3, 3, 4], [3, 4, 4, 5], [4, 5, 5, 6]), ([0, 1, 1, 2], [1, 2, 2, 3], [2, 3, 3, 4], [3, 0, 4, 5], [1, 2, 2, 3], [2, 3, 3, 4], [3, 4, 4, 5], [4, 5, 5, 6]), ([0, 1, 1, 2], [1, 2, 2, 3], [2, 3, 3, 4], [3, 0, 4, 5], [1, 2, 2, 3], [2, 3, 3, 4], [3, 4, 4, 5], [4, 5, 5, 6]), ([0, 1, 1, 2], [1, 2, 2, 3], [2, 3, 3, 4], [3, 0, 4, 5], [1, 2, 2, 3], [2, 3, 3, 4], [3, 4, 4, 5], [4, 5, 5, 6]), ([0, 1, 1, 2], [1, 2, 2, 3], [2, 3, 3, 4], [3, 0, 4, 5], [1, 2, 2, 3], [2, 3, 3, 4], [3, 4, 4, 5], [4, 5, 5, 6]), (3, 4, 2, 3)]

I rewrote your script a little to make it render correctly:

import bpy
from math import pi, cos, sin

capFaces=True

radius = 1
length = 4
slicesAcross = 4
slicesAround = 5
verts = []
faces = []

ring = []
# Lets build 1 cross-section
for i in range(slicesAround):
    angle = 2*pi*i/(slicesAround)
    v2 = radius * cos(angle)
    v3 = radius * sin(angle)
    ring.append([0, v2, v3])

# now create the verts
for i in range(slicesAcross):
    v1 = slicesAcross*(i/slicesAcross)
    verts += ([ [v1,]+ x[1:3] for x in ring])

for i in range(slicesAcross - 1):
    s = i*slicesAround
    for v in range(slicesAround):
        faces.append( [ v+s, (v+1)%slicesAround+s,
                       (v+1)%slicesAround+slicesAround+s,
                       v+slicesAround+s  ] )

if capFaces:
    cap=[f for f in range(slicesAround-1, -1, -1)]
    faces.append(cap)
    cap=[f for f in range(slicesAround*(slicesAcross - 1), slicesAround*(slicesAcross))]
    faces.append(cap)

mesh = bpy.data.meshes.new("MultiplexCylinder")
multiplexCylinder = bpy.data.objects.new("MultiplexCylinder", mesh)
bpy.context.collection.objects.link(multiplexCylinder)

mesh.from_pydata(verts, [], faces)

Hi. I see now that my list was incorrect. I have fixed the list to how I want it now. Thanks for the response

If you found the answer helpful, you can upvote it. If it fully answered your question you can mark it as accepted.

I need some more reputation points to upvote, but I did accept your answer. I'm surprised you beat me to it! I also completed it in a different way. You can check how I wrote it for fun if you want, but it looks like your code is shorter and probably more efficient. Thanks!


text:
Why can't I have both clean corners and a clean build for this curve animation?

I have looked through the post: Fill along the front of a path of an SVG and can't find a solution in it.
To create the above animation, I first added a bezier curve to the scene. I then applied a build modifier to the curve. I then added a nurbs path to the scene. Next, in the bezier curve's object data properties, under Geometry, then under Bevel, I set the bevel object to the nurbs path. Finally, I scaled the nurbs path accordingly. It has to be a small scale. Under my nurbs path object data properties, the x, y, and z scale are all about .03.
The curve animates itself in block chunks that appear in the correct order, but they individually grow in a direction that's 90 degrees clockwise of where I want them to grow. In other words, in the gif attached, I want the individual chunks of the curve to grow left to right instead of top to bottom.
I'm not sure what's responsible for this effect.
File:

EDIT: So after going through @Chris's answer, it appears that the curve can be built normally if I extrude the curve and apply a 90 degree tilt. After learning this I went on to test out a few letters. I converted the letter b to curve, applied a build modifier, gave it a small extrusion, and then tilted it in edit mode by 90. Here's what that looks like:

The curve above builds itself properly, but there is a corner of the b that doesn't look too good (these messy corners can be worse and more noticeable on other letters) To fix the messy corner, the curve shape must be switched from 3D to 2D. I learned so after reading through this post: How to make beveled 90 degree corners on a curve better?  For the beveling of this curve new curve with a corrected corner, the only way I could get the shape I want is by using the nurbs path method instead of the extrusion method. Here is what the animation looks like with the corrected corner:

That corner is fixed, but there is only one problem, the curve doesn't build itself like how it does when I was using the first method. This means that I can't have the best of both worlds. I want the clean corners that are available in 2D mode and the clean curve building that I got when using 3d mode with applied extrusion. Help! Here's a file where you can compare the two letters.

Hello and welcome. Please don't post the same question more than once. If you feel your previous question was incorrectly marked as duplicate, or the linked posts don't adequately address your issue, go back to your previous question and edit by pressing the Edit button below, including information of what you have tried, why it failed and how the duplicates don't address your issue. Once edited the question is automatically queued up for review so it can be reopened.

@Adam717: of course you can retract your "correct answer vote" by changing your question with additional wishes. But this is not fair. Normally you should open a new question. But of course - this is your decision.

I can see how the retraction of correct answer is a bit unfair. I'll give it back.

*** UPDATE ***
after Adam "updated" his answer for "new" specifications:
you can animate your path by unchecking cyclic and animate these values:

result:

it might be necessary to animate the inner part as a separate curve/path.
********************************* old answer **************
It is because you used your nurbspath as bevel object.
Because your nurbspath is straight anyway, just delete it and use the extrude value of the bezierpath, then it works.

Thanks so much. I did have one slight issue and it was that the extrusion of the curve was now along the z axis. This can be fixed by going into edit mode, make sure everything is selected, opening the side toolbar with N,  open Item, open Transform, and changing the mean tilt to 90 degrees

You are welcome!!

I would still like additional help if possible. About the method of unchecking the cyclic U, my issue with it is that it leave a small slit near the upper portion of the "b" . I thought about keeping the cyclic U unchecked throughout the animation and then at the very last frame, check cyclic U. This would leave the slit there until the very last frame. However cyclic u isn't keyframable. I've also been trying to figure out a way to essentially separate curves by loose parts and have been running out of luck with solutions.

You can just adapt the last point with the handles or even add another point so that it „looks like closed“ even if it doesn’t.

Alright after converting the curve to a mesh, separating the mesh by loose parts, and then converting the mesh loose parts back to curves, I was able to essentially separate the curve by loose parts. I then added the nurbs path as the curves bevel objects, set the curve types to 2D, and turned their cyclic U off. Finally to patch their slits caused by the unchecking cyclic U, I went into edit mode, added a new vertex at the same location as the 0th vertex, then added another new vertex in the same location as (0th vertex + .25(1st vertex - 0th vertex)). Everything looks good now.

Glad you made it


text:
Modeling/sculpting hand
beginner doubt here!
I've been staring for this hand for a long time and have no idea how I could sculpt that.
Does anyone have any tips for me? I've been modeling for a really short time, so anything is helpful!
Thanks a lot in advance!!!

You'll easily find pictures of low-poly hands, but do you plan to animate? in that case don't model closed hands.

no, it's going to be static for a spark ar filter

You can use your pictures as references, create a plane and subdivide it:

Extrude it up, extrude the fingers:

Rotate the front face or use the Shear tool, then continue to extrude and rotate:

Begin to work on the thumb:

Give it a Subdivision Surface modifier, change the topology appropriately: