示例#1
0
    def renderGeo(self):
        """ This method calls the arnold functions to setup and scene and render the image
		
		"""

        # Beging the arnold session
        arnold.AiBegin()

        # Set the log for debugging
        arnold.AiMsgSetLogFileName(self.log)
        arnold.AiMsgSetConsoleFlags(arnold.AI_LOG_ALL)

        # Set the attributes for shader
        attributes = {
            "Kd_color":
            ("rgb", (self._color[0], self._color[1], self._color[2])),
            "Ks": ("float", 0.05),
            "Ko": ("float", .5),
        }
        # Create a simple shader
        shader = _arnoldRenderUtils.createSimpleShader("standard", "myshader1",
                                                       attributes)

        # Set the attributes for a geo
        attributes = {
            "center": ("vector", (0.0, 4.0, 0.0)),
            "radius": ("float", 5.0),
            "shader": ("pointer", shader)
        }
        # Create a simple sphere and set the shader created above
        sph = _arnoldRenderUtils.createGeometry("sphere", "mysphere",
                                                attributes)

        # Set camera attributes
        attributes = {
            "position": ("vector", (0.0, 10.0, 35.0)),
            "look_at": ("vector", (0.0, 3.0, 0.0)),
            "fov": ("float", 45.0),
        }
        # create a perspective camera
        camera = _arnoldRenderUtils.createCamera("persp_camera",
                                                 "scene_Camera", attributes)

        # Set light attributes
        attributes = {
            "position": ("vector", (0.0, 30.0, 0.0)),
            "intensity": ("float", 10.0),
            "radius": ("float", 4.0),
        }
        # Create point lights with different attributes
        point_lightA = _arnoldRenderUtils.createLight("point_light",
                                                      "pointLight_A",
                                                      attributes)

        # Point Light B
        attributes["position"] = ("vector", (0.0, -30.0, 0.0))
        point_lightB = _arnoldRenderUtils.createLight("point_light",
                                                      "pointLight_B",
                                                      attributes)

        # Point light C
        attributes = {
            "position": ("vector", (0.0, 4.0, 20.0)),
            "intensity": ("float", 5.0),
            "radius": ("float", 15.0),
        }
        point_lightC = _arnoldRenderUtils.createLight("point_light",
                                                      "pointLight_C",
                                                      attributes)

        # Set attributes for render Parameters
        attributes = {
            "AA_samples": ("integer", 8),
            "xres": ("integer", 480),
            "yres": ("integer", 360),
            "GI_diffuse_depth": ("integer", 4),
            "camera": ("pointer", camera),
        }
        # Set the render options
        options = _arnoldRenderUtils.createUniverseOptions(attributes)

        # Set the driver attributes
        attributes = {
            "filename": ("string", os.path.basename(self.image)),
            "gamma": ("float", 2.2),
        }
        driver = _arnoldRenderUtils.createOutputDriver("driver_jpeg",
                                                       "scene_driver",
                                                       attributes)

        # Create a filter
        filter = _arnoldRenderUtils.createFilter("gaussian_filter",
                                                 "scene_filter", {})

        # Create an output array with the filter and driver
        outputArrayElements = ["RGBA RGBA scene_filter scene_driver"]
        outputs_array = _arnoldRenderUtils.createOutputArray(
            arnold.AI_TYPE_STRING, outputArrayElements, {})
        attributes = {
            "outputs": ("array", outputs_array),
        }
        _arnoldRenderUtils.assignAttributes(options, attributes)

        # render the image
        arnold.AiRender(arnold.AI_RENDER_MODE_CAMERA)

        # Arnold session shutdown
        arnold.AiEnd()
示例#2
0
    def renderGeo(self):

        arnold.AiBegin()

        arnold.AiMsgSetLogFileName(self._logFile)
        arnold.AiMsgSetConsoleFlags(arnold.AI_LOG_ALL)

        # create a sphere geometric primitive
        sph = arnold.AiNode("sphere")
        arnold.AiNodeSetStr(sph, "name", "mysphere")
        arnold.AiNodeSetVec(sph, "center", 0.0, 4.0, 0.0)
        arnold.AiNodeSetFlt(sph, "radius", 5.0)

        # create a red standard shader
        shader1 = arnold.AiNode("standard")
        arnold.AiNodeSetStr(shader1, "name", "myshader1")
        arnold.AiNodeSetRGB(shader1, "Kd_color", self._color[0],
                            self._color[1], self._color[2])
        arnold.AiNodeSetFlt(shader1, "Ks", 0.05)

        # assign the shaders to the geometric objects
        arnold.AiNodeSetPtr(sph, "shader", shader1)

        # create a perspective camera
        camera = arnold.AiNode("persp_camera")
        arnold.AiNodeSetStr(camera, "name", "mycamera")
        # position the camera (alternatively you can set 'matrix')
        arnold.AiNodeSetVec(camera, "position", 0.0, 10.0, 35.0)
        arnold.AiNodeSetVec(camera, "look_at", 0.0, 3.0, 0.0)
        arnold.AiNodeSetFlt(camera, "fov", 45.0)

        # create a point light source
        light = arnold.AiNode("point_light")
        arnold.AiNodeSetStr(light, "name", "pointLight_A")
        # // position the light (alternatively use 'matrix')
        arnold.AiNodeSetVec(light, "position", 0.0, 30.0, 0.0)
        arnold.AiNodeSetFlt(light, "intensity", 10.0)
        # alternatively, use 'exposure'
        arnold.AiNodeSetFlt(light, "radius", 4.0)
        # for soft shadows

        # create a point light source
        light = arnold.AiNode("point_light")
        arnold.AiNodeSetStr(light, "name", "pointLight_B")
        # // position the light (alternatively use 'matrix')
        arnold.AiNodeSetVec(light, "position", 0.0, -30.0, 0.0)
        arnold.AiNodeSetFlt(light, "intensity", 10.0)
        # alternatively, use 'exposure'
        arnold.AiNodeSetFlt(light, "radius", 4.0)
        # for soft shadows

        # create a point light source
        light = arnold.AiNode("point_light")
        arnold.AiNodeSetStr(light, "name", "pointLight_C")
        # // position the light (alternatively use 'matrix')
        arnold.AiNodeSetVec(light, "position", 0.0, 4.0, 20.0)
        arnold.AiNodeSetFlt(light, "intensity", 5.0)
        # alternatively, use 'exposure'
        arnold.AiNodeSetFlt(light, "radius", 15.0)
        # for soft shadows

        # // get the global options node and set some options
        options = arnold.AiUniverseGetOptions()
        arnold.AiNodeSetInt(options, "AA_samples", 8)
        arnold.AiNodeSetInt(options, "xres", 480)
        arnold.AiNodeSetInt(options, "yres", 360)
        arnold.AiNodeSetInt(options, "GI_diffuse_depth", 4)
        # // set the active camera (optional, since there is only one camera)
        arnold.AiNodeSetPtr(options, "camera", camera)

        # create an output driver node
        driver = arnold.AiNode("driver_jpeg")
        arnold.AiNodeSetStr(driver, "name", "mydriver")
        arnold.AiNodeSetStr(driver, "filename", self._sceneName)
        arnold.AiNodeSetFlt(driver, "gamma", 2.2)

        # create a gaussian filter node
        filter = arnold.AiNode("gaussian_filter")
        arnold.AiNodeSetStr(filter, "name", "myfilter")

        # assign the driver and filter to the main (beauty) AOV,
        # which is called "RGBA" and is of type RGBA
        outputs_array = arnold.AiArrayAllocate(1, 1, arnold.AI_TYPE_STRING)
        arnold.AiArraySetStr(outputs_array, 0, "RGBA RGBA myfilter mydriver")
        arnold.AiNodeSetArray(options, "outputs", outputs_array)

        # finally, render the image!
        arnold.AiRender(arnold.AI_RENDER_MODE_CAMERA)

        # // Arnold session shutdown
        arnold.AiEnd()
示例#3
0
	def renderGeo(self):
		""" This method calls the arnold functions to setup and scene and render the image
		"""

		arnold.AiBegin()

		arnold.AiMsgSetLogFileName(self.log)
		arnold.AiMsgSetConsoleFlags(arnold.AI_LOG_ALL)

		attributes = {
			"Kd_color": ("rgb", (self._color[0], self._color[1], self._color[2])),
			"Ks": ("float", 0.05),
			"Ko": ("float", .5),
		}
		shader = createSimpleShader("standard", "myshader1", attributes)

		attributes = {
			"center": ("vector", (0.0, 4.0, 0.0)),
			"radius": ("float", 5.0),
			"shader": ("pointer", shader)
		}
		sph = createGeometry("sphere", "mysphere", attributes)
		# attributes["center"] = ("vector", (1.0, 2.0, 3.0))
		# sph1 = createGeometry("sphere", "mysphere", attributes)

		# assignAttributes(sph, {"radius": ("float", 0.9)})

		# arnold.AiNodeSetRGB(shader1, "Kd_color", self._color[0], self._color[1], self._color[2])
		# arnold.AiNodeSetFlt(shader1, "Ks", 0.05)
  
		# # assign the shaders to the geometric objects
		# arnold.AiNodeSetPtr(sph, "shader", shader1)
  
		# create a perspective camera
		camera = arnold.AiNode("persp_camera")
		arnold.AiNodeSetStr(camera, "name", "mycamera")
		arnold.AiNodeSetVec(camera, "position", 0.0, 10.0, 35.0)
		arnold.AiNodeSetVec(camera, "look_at", 0.0, 3.0, 0.0)
		arnold.AiNodeSetFlt(camera, "fov", 45.0)
  
		# create a point light source
		light = arnold.AiNode("point_light")
		arnold.AiNodeSetStr(light, "name", "pointLight_A")
		arnold.AiNodeSetVec(light, "position", 0.0, 30.0, 0.0)
		arnold.AiNodeSetFlt(light, "intensity", 10.0) 
		arnold.AiNodeSetFlt(light, "radius", 4.0) 
  
		# create a point light source
		light = arnold.AiNode("point_light")
		arnold.AiNodeSetStr(light, "name", "pointLight_B")
		arnold.AiNodeSetVec(light, "position", 0.0, -30.0, 0.0)
		arnold.AiNodeSetFlt(light, "intensity", 10.0) 
		arnold.AiNodeSetFlt(light, "radius", 4.0) 

		# create a point light source
		light = arnold.AiNode("point_light")
		arnold.AiNodeSetStr(light, "name", "pointLight_C")
		arnold.AiNodeSetVec(light, "position", 0.0, 4.0, 20.0)
		arnold.AiNodeSetFlt(light, "intensity", 5.0)
		arnold.AiNodeSetFlt(light, "radius", 15.0) 


		# get the global options node and set some options
		options = arnold.AiUniverseGetOptions()
		arnold.AiNodeSetInt(options, "AA_samples", 8)
		arnold.AiNodeSetInt(options, "xres", 480)
		arnold.AiNodeSetInt(options, "yres", 360)
		arnold.AiNodeSetInt(options, "GI_diffuse_depth", 4)
		arnold.AiNodeSetPtr(options, "camera", camera)
  
		 # create an output driver node
		driver = arnold.AiNode("driver_jpeg")
		arnold.AiNodeSetStr(driver, "name", "mydriver")
		# arnold.AiNodeSetStr(driver, "filepath", os.path.dirname(self.image))
		arnold.AiNodeSetStr(driver, "filename", os.path.basename(self.image))
		arnold.AiNodeSetFlt(driver, "gamma", 2.2)
  
		# create a gaussian filter node
		filter = arnold.AiNode("gaussian_filter")
		arnold.AiNodeSetStr(filter, "name", "myfilter")
  
		# assign the driver and filter to the main (beauty) AOV,
		# which is called "RGBA" and is of type RGBA
		outputs_array = arnold.AiArrayAllocate(1, 1, arnold.AI_TYPE_STRING)
		arnold.AiArraySetStr(outputs_array, 0, "RGBA RGBA myfilter mydriver")
		arnold.AiNodeSetArray(options, "outputs", outputs_array)
  
		# finally, render the image!
		arnold.AiRender(arnold.AI_RENDER_MODE_CAMERA)
	
		# // Arnold session shutdown
		arnold.AiEnd()