ChatGPT-4oは3Dモデルを出力できる
以下の記事を読んで私も試してみたけどChatGPT-4oはSTLファイルを出力できます。
Q.土星の3Dモデルを生成し、STLファイル形式で出力してください
A.土星の3DモデルをSTLファイル形式で生成しました。以下のリンクからダウンロードできます。
土星の3Dモデルをダウンロード
内部的にはPythonでコードを書いて生成しているようです。
import numpy as np
from math import sin, cos, pi
import trimesh
# Parameters for Saturn and its rings
saturn_radius = 60268 # in kilometers
ring_inner_radius = 74500 # in kilometers
ring_outer_radius = 140220 # in kilometers
saturn_scale = 0.1 # Scaling factor to make the model manageable
# Convert to a manageable size for 3D modeling
saturn_radius *= saturn_scale
ring_inner_radius *= saturn_scale
ring_outer_radius *= saturn_scale
# Function to create a sphere (for Saturn)
def create_sphere(radius, segments):
vertices = []
indices = []
for i in range(segments):
lat = pi * (-0.5 + float(float(i) / float(segments - 1)))
for j in range(segments):
lon = 2 * pi * float(float(j) / float(segments - 1))
x = radius * cos(lat) * cos(lon)
y = radius * cos(lat) * sin(lon)
z = radius * sin(lat)
vertices.append([x, y, z])
if i < (segments - 1) and j < (segments - 1):
a = i * segments + j
b = a + segments
c = b + 1
d = a + 1
indices.append([a, b, d])
indices.append([b, c, d])
return vertices, indices
# Function to create a torus (for Saturn's rings)
def create_torus(inner_radius, outer_radius, ring_segments, side_segments):
vertices = []
indices = []
for i in range(ring_segments):
theta = 2.0 * pi * i / ring_segments
cos_theta = cos(theta)
sin_theta = sin(theta)
for j in range(side_segments):
phi = 2.0 * pi * j / side_segments
cos_phi = cos(phi)
sin_phi = sin(phi)
dist = inner_radius + (outer_radius - inner_radius) / 2.0 + (outer_radius - inner_radius) / 2.0 * cos_phi
x = dist * cos_theta
y = dist * sin_theta
z = (outer_radius - inner_radius) / 2.0 * sin_phi
vertices.append([x, y, z])
if i < (ring_segments - 1) and j < (side_segments - 1):
a = i * side_segments + j
b = a + side_segments
c = b + 1
d = a + 1
indices.append([a, b, d])
indices.append([b, c, d])
return vertices, indices
# Create the Saturn sphere
saturn_segments = 32
saturn_vertices, saturn_indices = create_sphere(saturn_radius, saturn_segments)
# Create the rings of Saturn
ring_segments = 64
side_segments = 8
ring_vertices, ring_indices = create_torus(ring_inner_radius, ring_outer_radius, ring_segments, side_segments)
# Combine vertices and faces
vertices = np.array(saturn_vertices + ring_vertices)
indices = np.array(saturn_indices + [[i[0] + len(saturn_vertices), i[1] + len(saturn_vertices), i[2] + len(saturn_vertices)] for i in ring_indices])
# Create the mesh using trimesh
mesh = trimesh.Trimesh(vertices=vertices, faces=indices)
# Save the mesh to STL file
file_path = '/mnt/data/saturn_model.stl'
mesh.export(file_path)
file_path
これはどういうことかというとSTLファイルが出力できるということは3Dプリンタに読み込ませて3Dモデルを作成できるということです。
Fusion360でSTLファイルを開いてみました。
微妙につながっていなかった。
この記事が気に入ったらサポートをしてみませんか?