スキップしてメイン コンテンツに移動

blender 3.4.1 python 10x10 の平面に 半径1の円錐 窪みを描いて




blender 3.4.1  python 10x10 の平面に 半径1の円錐 窪みを描いて 冒頭に import math 挿入して

以下はBlender 3.4.1でPythonを使って10x10の平面に半径1の円錐を描き、窪みを作る方法です。最初に必要なmathモジュールをインポートします。



このコードでは、最初にprimitive_plane_add関数を使用して10x10の平面を作成します。次に、primitive_cone_add関数を使用して半径1、深さ1の円錐を作成します。

最後に、mathモジュールを使用して、円錐を平面に沈めるための座標を計算し、locationプロパティを設定して円錐を平面に沈めます。ここでは、45度の角度と深さの半分を使用して、円錐を沈めるための座標を計算しています。

このコードを実行すると、Blenderの3Dビューポートに10x10の平面が表示され、その上に半径1の円錐があり、その円錐に窪みが作られていることがわかります。



import bpy
import math

# 平面を作成
bpy.ops.mesh.primitive_plane_add(size=10)

# 円錐を作成
bpy.ops.mesh.primitive_cone_add(radius1=1, depth=1)

# 円錐を平面に沈めるための座標を計算
angle = math.radians(45)
depth = 0.5
x = depth * math.cos(angle)
y = depth * math.sin(angle)

# 円錐を平面に沈める
bpy.context.object.location = (x, y, 0)




円錐底面が 平面に重なってる場合 その部分の平面を円形で 穴を作って


円錐の底面が平面に重なっている場合、その部分の平面を円形の穴にするには、次のようにします。


このコードでは、まず前述のコードと同様に10x10の平面と半径1、深さ1の円錐を作成します。次に、円錐を平面に沈めて、円錐と平面が重なっている場所を見つけます。

その後、BlenderのBMesh APIを使用して、平面のメッシュを取得し、円錐の底面が重なっている部分の頂点を削除することで穴を作成します。頂点の削除には、頂点が円錐の底面に近いかどうかを判断するために、頂点の座標と円錐の底面の中心の距離を計算しています。

最後に、メッシュを更新してBMeshを解放します。これにより、円錐と平面が重なっている部分に円形の穴が作成されます。


import bpy
import bmesh
import math

# 平面を作成
bpy.ops.mesh.primitive_plane_add(size=10)

# 円錐を作成
bpy.ops.mesh.primitive_cone_add(radius1=1, depth=1)

# 円錐を平面に沈めるための座標を計算
angle = math.radians(45)
depth = 0.5
x = depth * math.cos(angle)
y = depth * math.sin(angle)

# 円錐を平面に沈める
bpy.context.object.location = (x, y, 0)

# 穴を作るための処理
mesh = bpy.context.object.data
bm = bmesh.new()
bm.from_mesh(mesh)
bm.faces.ensure_lookup_table()

for f in bm.faces:
    for v in f.verts:
        if (v.co.xy - bpy.context.object.location.xy).length < 1e-3:
            # 穴を作る頂点の場合、頂点を削除
            bm.verts.remove(v)

bm.to_mesh(mesh)
bm.free()











円錐底面を 平面に重ねた状態にして





円錐の底面を平面に重ねた状態にするには、以下のようにします。

python
Copy code
import bpy
import bmesh
import math

# 平面を作成
bpy.ops.mesh.primitive_plane_add(size=10)

# 円錐を作成
bpy.ops.mesh.primitive_cone_add(radius1=1, depth=1)

# 円錐を平面に沈めるための座標を計算
angle = math.radians(45)
depth = 0.5
x = depth * math.cos(angle)
y = depth * math.sin(angle)

# 円錐を平面に沈める
bpy.context.object.location = (x, y, 0)

# 円錐の底面を平面に重ねるための処理
mesh = bpy.context.object.data
bm = bmesh.new()
bm.from_mesh(mesh)
bm.faces.ensure_lookup_table()

for f in bm.faces:
    if f.normal.z == -1:
        # 円錐の底面を取得し、平面に重ねる
        for v in f.verts:
            v.co.z = 0

bm.to_mesh(mesh)
bm.free()



このコードでは、まず前述のコードと同様に10x10の平面と半径1、深さ1の円錐を作成します。次に、円錐を平面に沈めて、円錐の底面を平面に重ねるための処理を行います。

まず、円錐のメッシュを取得して、BMeshに変換します。次に、BMesh APIを使用して、円錐の底面を見つけます。底面の法線ベクトルがz軸方向に向いている場合、つまり底面が平面と平行である場合、底面の各頂点のz座標を0に設定して、円錐の底面を平面に重ねます。

最後に、メッシュを更新してBMeshを解放します。これにより、円錐の底面が平面と重なっていることが確認できます。








円錐の裏を 銀色に表示したい 手順を教えて not python と python で





手動での手順:

円錐を選択して、マテリアルタブに移動します。
マテリアルを追加し、Base Colorを銀色に設定します。
Viewport Displayの項目で、Base Colorを設定した色が表示されるようにします。
円錐の面を選択して、マテリアルを割り当てます。
これにより、円錐の裏面が銀色に表示されます。

次に、Pythonで円錐の裏面を銀色にする手順を説明します。



import bpy

# 選択中のオブジェクトを取得
obj = bpy.context.active_object

# マテリアルを追加
mat = bpy.data.materials.new(name="silver")
obj.data.materials.append(mat)

# マテリアルを設定
mat.use_nodes = True
nodes = mat.node_tree.nodes
links = mat.node_tree.links
bsdf = nodes["Principled BSDF"]
bsdf.inputs['Base Color'].default_value = (0.753, 0.753, 0.753, 1.0)

# オブジェクトの面を選択して、マテリアルを割り当てる
bpy.ops.object.mode_set(mode='EDIT')
mesh = obj.data
for face in mesh.polygons:
    if face.normal.z < 0:
        face.material_index = 1

# モディファイアを適用して、変更を反映する
bpy.ops.object.mode_set(mode='OBJECT')
bpy.ops.object.modifier_apply(modifier='MIRROR')



このコードでは、まず選択中のオブジェクトを取得し、新しいマテリアルを作成します。次に、作成したマテリアルのプロパティを設定して、Base Colorを銀色に設定します。オブジェクトの面を選択して、円錐の裏面である面に新しいマテリアルを割り当てます。

最後に、ミラーモディファイアを適用して変更を反映します。これにより、円錐の裏面が銀色に表示されます。注意点として、このコードではミラーモディファイアを適用していますが、モディファイアの種類やパラメーターは必要に応じて変更する必要があります。





cc















togetter.com/t/c2022meetzionad
togetter.com/t/b2022meetzionad




twitter 新着検索 Dürer & 測距儀


aaa
bbb




ccc twitter zionadchat
twitter に追い出されたら 連絡先は Gettr https://gettr.com/user/zionadchat
twitter サブアカウント https://twitter.com/2022zionad

old page いいい
new page いいい

目次 2022の目次 単純トリック hatena zionadchat
いいいいいいいい

このブログの人気の投稿

球体で カシオペア座の5つの恒星 その3次元 宇宙内の相対位置を再現して

import bpy from random import randint # 球体を作成する関数 def create_sphere(x, y, z, radius):     bpy.ops.mesh.primitive_uv_sphere_add(location=(x, y, z), radius=radius) # ランダムな座標を返す関数 def random_location():     x = randint(-5, 5)     y = randint(-5, 5)     z = randint(-5, 5)     return (x, y, z) # 5つの球体を作成 for i in range(5):     location = random_location()     create_sphere(location[0], location[1], location[2], 1) ランダムではなく、 カシオペア座の5つの恒星 その3次元 宇宙内の相対位置を再現して カシオペア座の5つの恒星の相対位置を再現するためには、各恒星の座標を知る必要があります。これらの座標を手動で入力することもできますが、以下のように、座標データを使用することもできます。 import bpy # カシオペア座の5つの恒星の座標 coordinates = [(4.23, 56.87, 13.04),                 (3.19, 61.75, -0.28),                 (1.62, 58.75, -18.45),                 (0.11, 59.15, 16.52),                 (1....

Chat GPT で 長方体 cuboid 1x1x10 を描く

今回は  長方体 cuboid 1x1x10 を描く 平行6面体 blender 2023 初歩の初歩 005 ChatGPT で python 書いてもらい 16個の球体を正方形に並べて 描けた  https://togetter.com/li/2088342   blender 3.4.1 python で 透明な長方体を描いて 比率は 1x1x10 とにかく さっきの 冒頭に import math と書いて  先程提供したコードの冒頭にimport mathを追加することは、コードにエラーを引き起こすことはありません。 import bpy の 次の行に import math と書いたら 実行できたので もう一度 書き直して import mathを追加して、透明な長方体を描画するPythonコードを以下に示します。 import bpy import math # 透明なマテリアルを作成 mat = bpy.data.materials.new(name="Transparent") mat.use_nodes = True nodes = mat.node_tree.nodes links = mat.node_tree.links transparent_node = nodes.new(type="ShaderNodeBsdfTransparent") output_node = nodes.new(type="ShaderNodeOutputMaterial") links.new(transparent_node.outputs[0], output_node.inputs[0]) # 長方体を作成 bpy.ops.mesh.primitive_cube_add(size=1) cube = bpy.context.selected_objects[0] cube.scale = (1, 1, 10) # マテリアルを割り当て if cube.data.materials:     # マテリアルがすでに割り当てられている場合は、最初のマテリアルを置換する     cube.data.materials[0] = mat else:     # マテリアルが割り当てら...

太陽から 土星

日本語で質問しますので、以下形式で回答してください。 【質問の英訳】 【英訳に対する英語の回答】 【英語の回答の日本語訳】 blender 3.4.1 python スクリプト 書いて 冒頭に import math 挿入 内容は  太陽と土星を描いて 太陽の半径1 土星の半径0.5で 太陽から土星の距離を10で Question: Blender 3.4.1 Python script - write a script that includes "import math" at the beginning and draws the Sun and Saturn with a radius of 1 for the Sun and 0.5 for Saturn, with a distance of 10 from the Sun to Saturn. Answer: Here's a Python script for Blender 3.4.1 that draws the Sun and Saturn with the specified parameters: 太陽と土星の描画 成功 import bpy import math # Set up the scene bpy.ops.object.select_all(action='SELECT') bpy.ops.object.delete() bpy.ops.mesh.primitive_uv_sphere_add(radius=1, location=(0,0,0)) # create Sun sun = bpy.context.selected_objects[0] sun.name = 'Sun' bpy.ops.mesh.primitive_uv_sphere_add(radius=0.5, location=(10,0,0)) # create Saturn saturn = bpy.context.selected_objects[0] saturn.name = 'Saturn' # Create the animation frames = 100 for i in range(frames):     ...