https://polyhaven.com/a/sandsloot
#あああああああああああああああああああああ
import bpy
# カメラの位置を変更する
bpy.data.objects['Camera'].location = (0, 10, 0)
# ライトの位置を変更する
bpy.data.objects['Light'].location = (0, 10, 1)
#あああああああああああああああああああああ
# obj_name = "half_sphere"
import bpy
import bmesh
from mathutils import Vector, Matrix
import math
zion_name ="半球 r=2"
# 半径2の球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=2.0, enter_editmode=False, location=(0,0,0), segments=64, ring_count=48)
# オブジェクトを取得
obj = bpy.context.object
# オブジェクトのメッシュを取得し、bmeshを作成
me = obj.data
bm = bmesh.new()
bm.from_mesh(me)
# 円周の方程式 y^2 + z^2 = 2 の y > 0 の部分の面を削除
for f in bm.faces:
if all([v.co.y > 0 for v in f.verts]):
bm.faces.remove(f)
# bmeshをメッシュに適用してオブジェクトを更新
bm.to_mesh(me)
me.update()
# オブジェクト名を設定
obj.name = zion_name
# オブジェクトの位置を変更
obj.location = (0, 0, 0)
# obj_name = "half 環境 写真"
import bpy
import bmesh
from mathutils import Vector, Matrix
import math
zion_name ="半球 環境 r=2"
# 半径2の球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius=2.0, enter_editmode=False, location=(0,0,0), segments=64, ring_count=48)
# オブジェクトを取得
obj = bpy.context.object
# オブジェクトのメッシュを取得し、bmeshを作成
me = obj.data
bm = bmesh.new()
bm.from_mesh(me)
# 円周の方程式 y^2 + z^2 = 2 の y > 0 の部分の面を削除
for f in bm.faces:
if all([v.co.y > 0 for v in f.verts]):
bm.faces.remove(f)
# bmeshをメッシュに適用してオブジェクトを更新
bm.to_mesh(me)
me.update()
# オブジェクト名を設定
obj.name = zion_name
# オブジェクトの位置を変更
obj.location = (0, 0, 0)
# "半球 math.sqrt(3) "
import bpy
import bmesh
from mathutils import Vector, Matrix
import math
zion_name ="半球 math.sqrt(3) "
# 半径 math.sqrt(3) の球体を作成
bpy.ops.mesh.primitive_uv_sphere_add(radius= math.sqrt(3) , enter_editmode=False, location=(0, -math.sqrt(3) ,0), segments=64, ring_count=48)
# オブジェクトを取得
obj = bpy.context.object
# オブジェクトのメッシュを取得し、bmeshを作成
me = obj.data
bm = bmesh.new()
bm.from_mesh(me)
# 円周の方程式 y^2 + z^2 = math.sqrt(3) , 0 math.sqrt(3) y > 0 の部分の面を削除
for f in bm.faces:
if all([v.co.y > 0 for v in f.verts]):
bm.faces.remove(f)
# bmeshをメッシュに適用してオブジェクトを更新
bm.to_mesh(me)
me.update()
# オブジェクト名を設定
obj.name = zion_name
# オブジェクトの位置を変更
obj.location = (0, -math.sqrt(3) , 0)
# 円錐 画面底面 h = math.sqrt(3)
import bpy
import math
# Height of cone
h = math.sqrt(3)
# Radius of base
r = 1.0
# Create cone
bpy.ops.mesh.primitive_cone_add(
vertices=32,
radius1=0.0,
radius2=r,
depth=h,
location=(0, -h / 2, 0),
rotation=(math.pi / 2, 0, 0)
)
# Select cone
cone = bpy.context.active_object
# Get coordinates of vertices
vertices = [v.co for v in cone.data.vertices]
# Select vertices of base
bottom_vertices = [v for v in vertices if abs(v.y + h / 2) < 0.00001]
# Add UV map to vertices of base
bpy.ops.object.mode_set(mode='EDIT')
bpy.ops.mesh.select_all(action='DESELECT')
for v in bottom_vertices:
cone.data.vertices[v.index].select = True
bpy.ops.uv.smart_project(angle_limit=66, island_margin=0.05)
bpy.ops.object.mode_set(mode='OBJECT')
# 正方形 000 中心 円錐頂点 square_object.location = (0, 0, 0)
import bpy
import math
# Side length of square
a = 2 * math.sqrt(3)
# Create mesh data and object
mesh_data = bpy.data.meshes.new("Square")
square_object = bpy.data.objects.new("Square", mesh_data)
# Create vertices of square
vertices = [(a/2, 0, a/2), (-a/2, 0, a/2), (-a/2, 0, -a/2), (a/2, 0, -a/2)]
# Create faces of square
faces = [(0, 1, 2, 3)]
# Assign vertices and faces to mesh data
mesh_data.from_pydata(vertices, [], faces)
mesh_data.update()
# Move square to center
square_object.location = (0, 0, 0)
# Link square to scene
bpy.context.scene.collection.objects.link(square_object)
# 正方形 000 中心 円錐頂点 square_object.location = (0, - math.sqrt(3), 0)
import bpy
import math
# Side length of square
a = 2 * math.sqrt(3)
# Create mesh data and object
mesh_data = bpy.data.meshes.new("Square")
square_object = bpy.data.objects.new("Square", mesh_data)
# Create vertices of square
vertices = [(a/2, 0, a/2), (-a/2, 0, a/2), (-a/2, 0, -a/2), (a/2, 0, -a/2)]
# Create faces of square
faces = [(0, 1, 2, 3)]
# Assign vertices and faces to mesh data
mesh_data.from_pydata(vertices, [], faces)
mesh_data.update()
# Move square to center
square_object.location = (0, - math.sqrt(3)
, 0)
# Link square to scene
bpy.context.scene.collection.objects.link(square_object)
# 半径2の円に内接する 正六角形
import bpy
import math
# Radius of circle
r = 2
# Side length of hexagon
a = r
# Create mesh data and object for hexagon
mesh_data = bpy.data.meshes.new("Hexagon")
hexagon_object = bpy.data.objects.new("Hexagon", mesh_data)
# Create vertices of hexagon
vertices = []
for i in range(6):
angle = math.pi/3 * i
x = a * math.cos(angle)
y = a * math.sin(angle)
vertices.append((x, y, 0))
# Create faces of hexagon
faces = [(0, 1, 2, 3, 4, 5)]
# Assign vertices and faces to mesh data
mesh_data.from_pydata(vertices, [], faces)
mesh_data.update()
# Move hexagon to center of circle
hexagon_object.location = (0, 0, 0)
# Link hexagon to scene
bpy.context.scene.collection.objects.link(hexagon_object)
blender python
正方形を作る
zion_name =" 列車速度” このようにオブジェクト名を 定義する
正方形を作る 正方形の中心を
zion_square_center = (0,-2 * math.sqrt(3),0)
正方形の長さを
zion_square_length = 2 * math.sqrt(3)
正方形の全体は
y= -2 * math.sqrt(3) 平面に 含まれる正方形を作る
zion_y = -2 * math.sqrt(3) このように定義する
正方形のx軸方向の長さを2倍にするのは
zion_x_longer = 2 このように定義する
水平平面 z=0
import bpy
import math
# オブジェクト名を定義
zion_name = "列車速度"
# 正方形の中心座標を定義
zion_square_center = (0, -2 * math.sqrt(3), 0)
# 正方形の長さを定義
zion_square_length = 2 * math.sqrt(3)
# 平面に正方形を作るためにy座標を定義
zion_y = -2 * math.sqrt(3)
# 正方形のx軸方向の長さを2倍にするために定義
zion_x_longer = 2
# 平面の正方形を作成
bpy.ops.mesh.primitive_plane_add(location=zion_square_center, size=zion_square_length)
bpy.context.object.name = zion_name
# オブジェクトを選択
bpy.ops.object.select_all(action='DESELECT')
bpy.data.objects[zion_name].select_set(True)
bpy.context.view_layer.objects.active = bpy.data.objects[zion_name]
# 縮小・拡大
bpy.ops.transform.resize(value=(zion_x_longer, 1, 1), orient_type='GLOBAL')
#電車列車平面 -2 * math.sqrt(3)
import bpy
import math
# オブジェクト名を定義
zion_name = "改造 いらないが 実験地面 2倍"
# 正方形の中心を定義
zion_square_center = (0, -2 * math.sqrt(3), 0)
# 正方形の長さを定義
zion_square_length = 2 * math.sqrt(3)
# 平面に正方形を作るためにy座標を定義
zion_y = -2 * math.sqrt(3)
# 正方形のx軸方向の長さを2倍にするために定義
zion_x_longer = 2
# 立方体を作成
bpy.ops.mesh.primitive_plane_add(location=zion_square_center, size=zion_square_length)
bpy.context.object.name = zion_name
# オブジェクトを選択
bpy.ops.object.select_all(action='DESELECT')
bpy.data.objects[zion_name].select_set(True)
bpy.context.view_layer.objects.active = bpy.data.objects[zion_name]
# 縮小・拡大
bpy.ops.transform.resize(value=(zion_x_longer, 1, 1), orient_type='GLOBAL')
# x軸を中心に90度回転
bpy.ops.transform.rotate(value=math.radians(90), orient_axis='X', orient_type='GLOBAL')
#電車列車平面 - math.sqrt(3)
import bpy
import math
# オブジェクト名を定義
zion_name = "実験範囲2倍"
# 正方形の中心を定義
zion_square_center = (0, - math.sqrt(3), 0)
# 正方形の長さを定義
zion_square_length = 2 * math.sqrt(3)
# 平面に正方形を作るためにy座標を定義
zion_y = - math.sqrt(3)
# 正方形のx軸方向の長さを2倍にするために定義
zion_x_longer = 2
# 立方体を作成
bpy.ops.mesh.primitive_plane_add(location=zion_square_center, size=zion_square_length)
bpy.context.object.name = zion_name
# オブジェクトを選択
bpy.ops.object.select_all(action='DESELECT')
bpy.data.objects[zion_name].select_set(True)
bpy.context.view_layer.objects.active = bpy.data.objects[zion_name]
# 縮小・拡大
bpy.ops.transform.resize(value=(zion_x_longer, 1, 1), orient_type='GLOBAL')
# x軸を中心に90度回転
bpy.ops.transform.rotate(value=math.radians(90), orient_axis='X', orient_type='GLOBAL')