// =========================================================================== // Copyright 2018 Autodesk, Inc. All rights reserved. // // Use of this software is subject to the terms of the Autodesk license // agreement provided at the time of installation or download, or which // otherwise accompanies this software in either electronic or hard copy form. // =========================================================================== global proc createImplicitVolumeProc( string $type ) { string $shaderName, $shadGroup, $shape; if( $type == "sphere"){ if( objExists( "sphereFogSG" )){ $shadGroup = "sphereFogSG"; int $hasShader = `connectionInfo -isDestination ($shadGroup + ".volumeShader")`; if( !$hasShader ) { $shaderName = `shadingNode -asShader volumeFog -name "sphereFog"`; connectAttr -f ($shaderName + ".outColor") ($shadGroup + ".volumeShader"); setAttr ($shaderName + ".dropoffShape") 1; } } else { $shaderName = `shadingNode -asShader volumeFog -name "sphereFog"`; $shadGroup = `sets -renderable true -noSurfaceShader true -empty -name ($shaderName + "SG")`; connectAttr -f ($shaderName + ".outColor") ($shadGroup + ".volumeShader"); setAttr ($shaderName + ".dropoffShape") 1; } $shape = `createNode renderSphere`; } else if( $type == "cube") { if( objExists( "cubeFogSG" )){ $shadGroup = "cubeFogSG"; int $hasShader = `connectionInfo -isDestination ($shadGroup + ".volumeShader")`; if( !$hasShader ) { $shaderName = `shadingNode -asShader volumeFog -name "cubeFog"`; connectAttr -f ($shaderName + ".outColor") ($shadGroup + ".volumeShader"); setAttr ($shaderName + ".dropoffShape") 2; } } else { $shaderName = `shadingNode -asShader volumeFog -name "cubeFog"`; $shadGroup = `sets -renderable true -noSurfaceShader true -empty -name ($shaderName + "SG")`; connectAttr -f ($shaderName + ".outColor") ($shadGroup + ".volumeShader"); setAttr ($shaderName + ".dropoffShape") 2; } $shape = `createNode renderBox`; } else if( $type == "cone") { if( objExists( "coneFogSG" )){ $shadGroup = "coneFogSG"; int $hasShader = `connectionInfo -isDestination ($shadGroup + ".volumeShader")`; if( !$hasShader ) { $shaderName = `shadingNode -asShader volumeFog -name "coneFog"`; connectAttr -f ($shaderName + ".outColor") ($shadGroup + ".volumeShader"); setAttr ($shaderName + ".dropoffShape") 3; } } else { $shaderName = `shadingNode -asShader volumeFog -name "coneFog"`; $shadGroup = `sets -renderable true -noSurfaceShader true -empty -name ($shaderName + "SG")`; connectAttr -f ($shaderName + ".outColor") ($shadGroup + ".volumeShader"); setAttr ($shaderName + ".dropoffShape") 3; } $shape = `createNode renderCone`; setAttr ($shape + ".coneAngle") 45; setAttr ($shape + ".coneCap") 1; string $dag[] = `listRelatives -p $shape`; setAttr ($dag[0] + ".rotateX") -90; setAttr ($dag[0] + ".translateY") 2; setAttr ($dag[0] + ".scale") 2.5 2.5 2; }else { error (uiRes("m_createImplicitVolume.kCreateImplicitVolumeUnknownVolumeType")) ; return; } sets -e -forceElement $shadGroup $shape; } global proc createImplicitVolume( string $type ){ string $cmd; $cmd = "createImplicitVolumeProc(\"" + $type + "\")"; if(`optionVar -q createPrimitiveAsTool`) { string $icon = "vacantCell.png"; switch($type) { case "sphere": $icon = "volumeSphere.png"; break; case "cube": $icon = "volumeCube.png"; break; case "cone": $icon = "volumeCone.png"; break; } $cmd = "createPrimitiveToolWithIcon(\"" + `encodeString($cmd)` + "\", \"" + $icon + "\"); setToolTo createPrimitiveContext"; } evalEcho($cmd); }