欢迎光临散文网 会员登陆 & 注册

ChatGPT 于blender代码建模的运用

2023-02-14 20:22 作者:DXH01  | 我要投稿

 

命令建模树
较为粗糙
命令建立二维曼德尔分形
非常不错

仅能建立简单二维分形,复杂的三维分形代码无法执行,原因不明

代码:

Mandlebrot分形

import bpy

import math

 

# Set the parameters for the Mandelbrot set

zoom = 300

x_offset = -0.5

y_offset = 0

max_iterations = 100

 

# Create a new mesh

mesh = bpy.data.meshes.new(name="Mandelbrot")

 

# Create an empty list to hold the vertices

verts = []

 

# Iterate over each pixel in the image and calculate the corresponding point in the Mandelbrot set

for y in range(0, bpy.context.scene.render.resolution_y):

    for x in range(0, bpy.context.scene.render.resolution_x):

        # Calculate the complex number corresponding to the current pixel

        real = (x - 0.5 * bpy.context.scene.render.resolution_x) / zoom + x_offset

        imag = (y - 0.5 * bpy.context.scene.render.resolution_y) / zoom + y_offset

        c = complex(real, imag)

 

        # Initialize z to 0 and iterate the Mandelbrot function until the magnitude of z exceeds 2 or the maximum number of iterations is reached

        z = 0

        for i in range(max_iterations):

            z = z*z + c

            if abs(z) > 2:

                break

 

        # If the maximum number of iterations was reached, add the corresponding point to the vertex list

        if i == max_iterations - 1:

            verts.append((real, imag, 0))

 

# Create a new object and link it to the scene

obj = bpy.data.objects.new(name="Mandelbrot", object_data=mesh)

bpy.context.scene.collection.objects.link(obj)

 

# Add the vertices to the mesh and update it

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

mesh.update()

 

巴恩斯利蕨:

import bpy

import random

 

# Set the initial point

x, y = 0, 0

 

# Define the transformation matrices

a = 0

b = 0

c = 0

d = 0

e = 0

f = 0

 

transformations = [

    (0, 0, 0, 0.16, 0, 0),

    (0.85, 0.04, -0.04, 0.85, 0, 1.6),

    (0.2, -0.26, 0.23, 0.22, 0, 1.6),

    (-0.15, 0.28, 0.26, 0.24, 0, 0.44),

]

 

# Set the number of iterations and scale factor

num_iterations = 100000

scale_factor = 100

 

# Create a list to store the vertices

vertices = []

 

# Perform the iterations

for i in range(num_iterations):

    # Choose a random transformation

    transformation = random.choice(transformations)

    # Apply the transformation

    a, b, c, d, e, f = transformation

    x_new = a * x + b * y + e

    y_new = c * x + d * y + f

    x, y = x_new, y_new

    # Add the point to the vertex list

    vertices.append((x * scale_factor, y * scale_factor, 0))

 

# Create a new mesh

mesh = bpy.data.meshes.new(name="Barnsley Fern")

 

# Add the vertices to the mesh

mesh.from_pydata(vertices, [], [])

 

# Create a new object and link it to the scene

obj = bpy.data.objects.new(name="Barnsley Fern", object_data=mesh)

bpy.context.scene.collection.objects.link(obj)

 

 


ChatGPT 于blender代码建模的运用的评论 (共 条)

分享到微博请遵守国家法律