From 5851bc34708d3f55e39ae195ba561b53aa5c16c1 Mon Sep 17 00:00:00 2001 From: CJSatnarine Date: Thu, 4 May 2023 12:46:13 -0400 Subject: [PATCH] Added an image as a texture to each cube. --- GenerateMitImage.py | 82 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 GenerateMitImage.py diff --git a/GenerateMitImage.py b/GenerateMitImage.py new file mode 100644 index 0000000..19f4b1d --- /dev/null +++ b/GenerateMitImage.py @@ -0,0 +1,82 @@ +#Imports. +import bpy; +import random; + +# Variables: +# Size of each cube. +size = 1; +# Setting the x, y, and z positions. +x = y = z = size / 2; +# Setting the number of cubes in each coordinate. +xNum = 3; +yNum = 3; +zNum = 3; +# Setting the initial value for the number of cubes in each recursive call. +cubeCount = 0; +# Setting the maximum amount of cubes that is needed to be created. +numOfCubes = xNum * yNum * zNum; +# print(numOfCubes); + +#Function to clean the scene. This removes all of the objects, collections, materials, particles, textures, images, curves, meshes, actions, nodes, and worlds from the scene. +def cleanScene(): + # Changes the mode to object mode if it is in Edit mode. + if (bpy.context.active_object and bpy.context.active_object.mode == "EDIT"): + bpy.ops.object.editmode_toggle(); + + # Checks for hidden stuff and unhides them. + for obj in bpy.data.objects: + obj.hide_set(False); + obj.hide_select = False; + obj.hide_viewport = False; + + # Selects all the objects and then deletes. + bpy.ops.object.select_all(action = "SELECT"); + bpy.ops.object.delete(); + +# Function to spawn the "ground" by creating several cubes using a nested for loop. +def spawnGround(): + # Iterate over each grid "cell" we want a cube at. + for x in range(xNum): + for y in range(yNum): + for z in range(zNum): + # Set the location. + location = (x, y, z); + + # Add the cubes. + bpy.ops.mesh.primitive_cube_add(size = size, location = location, scale = (size, size, size)); + + # Set the newly created cube as the active object. + activeObject = bpy.context.active_object; + + # Object View Layer variable. + activeObjectViewLayer = bpy.context.view_layer.objects.active; + + + + # Add a new material slot. + # bpy.ops.object.material_slot_add(); + + # Creating a new material and assigning it to the active cube. + material = bpy.data.materials.new("Material"); + material.use_nodes = True; + BSDF = material.node_tree.nodes["Principled BSDF"]; + materialNodes = material.node_tree.nodes; + materialLinks = material.node_tree.links; + + activeObject.data.materials.append(material); + + # Change the texture of the cube. + textureImage = material.node_tree.nodes.new('ShaderNodeTexImage'); + textureImage.image = bpy.data.images.load("C:\\Users\\satna\\OneDrive\\Desktop\\Programming\\Python\\Blender\\Blender-World-Generator\\DirtBlock.png"); + material.node_tree.links.new(BSDF.inputs['Base Color'], textureImage.outputs['Color']); + + # Assign the texture to the object. + if activeObjectViewLayer.data.materials: + activeObjectViewLayer.data.materials[0] = material; + else: + activeObjectViewLayer.data.materials.append(material); + + +# Calling the functions: +cleanScene(); +spawnGround(); \ No newline at end of file