[maya]Python3 Pyside2 _showProgressDialog qApp.processEvents() NameError: name ‘qApp’ is not defined

[maya]Python3 Pyside2 _showProgressDialog qApp.processEvents() NameError: name ‘qApp’ is not defined の解決方法

class DF_TalkUI(QMainWindow):


    def __init__(self, parent = None):
        super(DF_TalkUI, self).__init__(parent)
        self.setObjectName("DF_Talk_Window")
        self.setWindowTitle("DF Talk Window")
        self._initUI()
        self.errorDialog = QErrorMessage(self) # QErrorMessageインスタンスの保持

    def setupApp(self,app):
        self.app=app
    def _initUI(self):
        wrapper = QWidget()
        self.setCentralWidget(wrapper)

        mainLayout = QVBoxLayout()
        wrapper.setLayout(mainLayout)


        #-----------------------------------------------------------------------
        # sixth row
        #-----------------------------------------------------------------------
        sixthHorizontalArea = QHBoxLayout()
        sixthHorizontalArea.setSpacing(20)
        mainLayout.addLayout(sixthHorizontalArea)



        progressDialogBtn = QPushButton("Progress Dialog")
        sixthHorizontalArea.addWidget(progressDialogBtn)
        progressDialogBtn.clicked.connect(self._showProgressDialog)

        fileDialogBtn = QPushButton("File Dialog")
        sixthHorizontalArea.addWidget(fileDialogBtn)
        fileDialogBtn.clicked.connect(partial(QFileDialog.getOpenFileName, self, "File Select", options = QFileDialog.DontUseNativeDialog))

        #-----------------------------------------------------------------------
        # seventh row
        #-----------------------------------------------------------------------


    def _makeHorizontalLine(self):
        hline = QFrame()
        hline.setFrameShape(QFrame.HLine)
        hline.setFrameShadow(QFrame.Sunken)
        return hline


    def _showProgressDialog(self):
        #----------------------------------------------------
        qApp = self.app
        #----------------------------------------------------
        #QProgressDialog表示スロット
        
        max = 100
        progressDialog = QProgressDialog("Progress...", "Cancel", 0, max, self)
        progressDialog.setWindowTitle("Progress Dialog")

        for count in range(max+1):
            qApp.processEvents()

            if progressDialog.wasCanceled():
                break

            progressDialog.setValue(count)
            progressDialog.setLabelText("Progress... %d %%" % count)
            time.sleep(0.1)



def start(app):
    maya_win = get_maya_pointer()
    ui = DF_TalkUI(parent = maya_win)
    ui.setupApp(app)
    ui.show()
    return ui

print("__name__= "+str(__name__))
if __name__ == '__main__':

    app = QApplication.instance()
    if app is None:
        app = QApplication([])
    ui = start(app)
    app.exec_()

[maya]MELからPythonへ変数を渡す際にエンコードを変える MEL to Python Variable

global proc BuildMenuItems(string $menuName){
    python("import buildMenu.buildMenuItems as bm");
	python("import codecs");
	
	python("import sys");
    python("print('sys.getdefaultencoding= '+sys.getdefaultencoding())");
	
	print("$menuName= "+$menuName+"\n");
	string $menuNameA = python("menuNameA='"+$menuName+"'");
	print("$menuNameA= "+$menuNameA+"\n");
    python("print('menuNameA= '+str(menuNameA))");
	
	string $menuNameUTF8 = python("menuNameUTF8='"+$menuName+"'.encode('utf_8')");
	print("$menuNameUTF8= "+$menuNameUTF8+"\n");
    python("print('menuNameUTF8= '+str(menuNameUTF8))");
    
	string $menuNameCP932 = python("menuNameCP932='"+$menuName+"'.encode('cp932')");
	print("$menuNameCP932= "+$menuNameCP932+"\n");
	python("print('menuNameCP932= '+str(menuNameCP932))");
	
	string $menuNameDecodeUTF8 = python("menuNameDecodeUTF8=b'"+$menuName+"'.decode('utf-8')");
	print("$menuNameDecodeUTF8= "+$menuNameDecodeUTF8+"\n");
    python("print('menuNameDecodeUTF8= '+str(menuNameDecodeUTF8))");
    
	string $menuNameDecodeCP932 = python("menuNameDecodeCP932=b'"+$menuName+"'.decode('cp932')");
	print("$menuNameDecodeCP932= "+$menuNameDecodeCP932+"\n");
	python("print('menuNameDecodeCP932= '+str(menuNameDecodeCP932))");
	
    //python("bm.main('u" + $menuName + "')");
    //python("bm.main(menuNameDecodeCP932)");
    python("bm.main()");
}

[maya]エクセルをcsv出力してPythonでその日本語unicode型オブジェクトをcp932で出力すると日本語が表示される。

[maya]エクセルをcsv出力してPythonでその日本語unicode型オブジェクトをcp932で出力すると日本語が表示される。

u3042unicodeオブジェクト
https://www.kabipan.com/computer/python/unicode.html

# -*- coding: cp932 -*-

import pymel.core as pm
import pymel.tools.mel2py as mel2py
import re
import math
import random
workspaceDir=cmds.workspace( q=True, dir=True )
workspaceDir="D:/Projects/mocap_data/"
print("workspaceDir= "+workspaceDir)

csvPath=workspaceDir+"csv_utf8.csv"
csvPath=workspaceDir+"csv.csv"
csvPath_out=workspaceDir+"csv_out.csv"
print("csvPath= "+csvPath)
import sys
import codecs

fin  = codecs.open(csvPath, 'r', 'utf_8')    
    
print("fin= "+str(fin))
s = fin.read()
strData=s.rstrip()
#print("strData= "+strData)

#u3042はunicodeオブジェクト https://www.kabipan.com/computer/python/unicode.html

dict={}
slineArr=strData.split("\r")
slineArr_len=len(slineArr)
print("slineArr_len= "+str(slineArr_len))
print("slineArr= "+str(slineArr))
for line in slineArr:
    csvline_arr=line.split(",")
    print("csvline_arr= "+str(csvline_arr))
    try:
        FMNum= csvline_arr[1]
        #print("FMNum= "+str(FMNum))
        sys.stdout.write("FMNum= "+csvline_arr[1].encode('cp932')+"\n")
        
        motionName=csvline_arr[2]
        sys.stdout.write("motionName= "+csvline_arr[2].encode('cp932')+"\n")
        
        dict[FMNum] = motionName
        #print("motionName= "+str(motionName))
        
    except OSError:
        pass
    
print("dict= "+str(dict))

もっと

# -*- coding: utf-8 -*- 
from maya import cmds 
import pymel.core as pm 


def Simple_Avi_Export():
    topNodes=cmds.ls(assemblies=1,type='transform')
    print("topNodes= "+str(topNodes))
    for node in topNodes:
        try:
            cmds.setAttr(node+".visibility", 0)
        except RuntimeError:
            pass
            
    model=cmds.ls('*:*:model')
    print("model= "+str(model))
    cmds.setAttr(model[0]+".visibility", 1)
    model_Child=cmds.ls(model[0],dag=1)
    for node in model_Child:
        try:
            cmds.setAttr(node+".visibility", 1)
        except RuntimeError:
            pass
    
    #pm.setAttr("magF_Rig:secondaryJointCtrl.visibility", 0)
    cmds.select('export_sets_mot', r=1, ne=1)
    export_sets_mot_childs = cmds.listConnections( 'export_sets_mot', destination=True )
    print("export_sets_mot_childs[0]="+export_sets_mot_childs[0])
    childName=export_sets_mot_childs[0]
    print("childName="+childName)
    
    startF=cmds.getAttr(childName+".startF")
    endF=cmds.getAttr(childName+".endF")
    fbxName=cmds.getAttr(childName+".fbxName")
    exportPath=cmds.getAttr(childName+".exportPath ")
    print startF
    print endF
    print fbxName
    print exportPath
    
    sceneName=cmds.file( q=True, sceneName=True,shortName=True )
    root_ext_pair = os.path.splitext(sceneName)
    sceneNameonly=root_ext_pair[0]
    
    videoOutPath=exportPath+"/"+sceneNameonly+fbxName+".avi"
    videoOutPath="video"+"/"+sceneNameonly+fbxName+".avi"
    print("videoOutPath= "+videoOutPath)
    cmds.playblast(fp=4, clearCache=1, format='avi', sequenceTime=0, showOrnaments=1, percent=50, filename=videoOutPath, viewer=1, startTime=startF, endTime=endF, quality=70, compression="none" ,forceOverwrite=1)
    
#Simple_Avi_Export()


def dirAllOpenAndExport(dir_path):
    import os
    import re
    for current_dir, sub_dirs, files_list in os.walk(dir_path): 
      for file_name in files_list: 
        fullpath=os.path.join(current_dir,file_name)
        fullpath=os.path.abspath(fullpath)
        fullpath=re.sub(r'\\', '/', fullpath)
        print("fullpath= "+fullpath)
        cmds.file(fullpath, ignoreVersion=1, typ="mayaAscii", options="v=0;", o=1, f=1)
        Simple_Avi_Export()

dirAllOpenAndExport("D:/Projects/" )

そのほかの例

# -*- coding: cp932 -*-

import pymel.core as pm
import pymel.tools.mel2py as mel2py
import re
import math
import random
import sys
import codecs

workspaceDir=cmds.workspace( q=True, dir=True )
workspaceDir="D:/Projects/"
print("workspaceDir= "+workspaceDir)
csvPath_out=workspaceDir+"csv_out.csv"
csvPath=workspaceDir+"csv_utf8.csv"
csvPath=workspaceDir+"csv.csv"

print("csvPath= "+csvPath)

fin  = codecs.open(csvPath, 'r', 'utf_8')    
    
print("fin= "+str(fin))
s = fin.read()
strData=s.rstrip()
#print("strData= "+strData)

#u3042はunicodeオブジェクト https://www.kabipan.com/computer/python/unicode.html

dict={}
slineArr=strData.split("\r")
slineArr_len=len(slineArr)
print("slineArr_len= "+str(slineArr_len))
print("slineArr= "+str(slineArr))
for line in slineArr:
    csvline_arr=line.split(",")
    print("csvline_arr= "+str(csvline_arr))
    try:
        FMNum= csvline_arr[1]
        #print("FMNum= "+str(FMNum))
        #sys.stdout.write("FMNum= "+csvline_arr[1].encode('cp932')+"\n")
        
        motionName=csvline_arr[2]
        #sys.stdout.write("motionName= "+csvline_arr[2].encode('cp932')+"\n")
        
        dict[FMNum] = motionName
        #print("motionName= "+str(motionName))
        
    except OSError:
        pass
    
print("dict= "+str(dict))



#---------------------------------------------------------------------------------
# -*- coding: utf-8 -*- 
from maya import cmds 
import pymel.core as pm 


def getKeyFrame_3way():
    
    playbackOptions_query_minTime=int(cmds.playbackOptions(minTime=1, query=1))
    print("playbackOptions_query_minTime= "+str(playbackOptions_query_minTime))
    playbackOptions_query_maxTime=int(cmds.playbackOptions(query=1, maxTime=1))
    print("playbackOptions_query_maxTime= "+str(playbackOptions_query_maxTime))

    selected=cmds.ls(selection=1)

    cmds.select("*")

    findKeyframe_which_first=int(pm.findKeyframe(which='first'))
    print("findKeyframe_which_first= "+str(findKeyframe_which_first))
    findKeyframe_which_last=int(pm.findKeyframe(which='last'))
    print("findKeyframe_which_last= "+str(findKeyframe_which_last))

    cmds.select(selected)
    AllCurveStart=float(AllCurve_Start_or_End(0))
    AllCurveEnd=float(AllCurve_Start_or_End(1))
    print("AllCurveStart= "+str(AllCurveStart))
    print("AllCurveStart= "+str(AllCurveStart))
Start_Or_End=""
#global 
animCurve_string_arr = []
#global 

def AllCurve_Start_or_End(Start_Or_End):
    
    animCurve_string_arr=cmds.ls(type=['animCurveTL', 'animCurveTU', 'animCurveTA', 'animCurveTT'])

    keyframetime_arr=cmds.keyframe(animCurve_string_arr, query=1, timeChange=1)

    old_min=0.0
    old_max=0.0
    for i in range(0,len(keyframetime_arr)):
        if i == 0:
            old_min=keyframetime_arr[i]

            old_max=keyframetime_arr[i]

            
        if keyframetime_arr[i]<old_min:
            old_min=keyframetime_arr[i]
            
        if keyframetime_arr[i]>old_max:
            old_max=keyframetime_arr[i]
            
        
    return_float=0.0

    return_float=old_min
    if Start_Or_End == 0:
        return_float=old_min
        
    else:
        return_float=old_max
        
    return return_float

#getKeyFrame_3way()

#----------------------------------------------------------------------------------


from maya import cmds 
import pymel.core as pm 


def Simple_Avi_Export(mayaPath):
    #onColorMgtOutputEnabledCheckBoxChange colorManagementOutputEnableCheckBoxRenderSettings 0;
    #onColorMgtOutputChanged colorManagementOutputTransformOptionMenuRenderTypeSettings colorManagementOutputTransformOptionMenuRenderSettings colorManagementOutputEnableCheckBoxRenderSettings 0;
    #import maya.mel as mel

    #mel.eval('onColorMgtOutputEnabledCheckBoxChange colorManagementOutputEnableCheckBoxRenderSettings 0;')
    #mel.eval('onColorMgtOutputChanged colorManagementOutputTransformOptionMenuRenderTypeSettings colorManagementOutputTransformOptionMenuRenderSettings colorManagementOutputEnableCheckBoxRenderSettings 0;')
    pm.setAttr("persp.translateX", 327)
    pm.setAttr("persp.translateY", 313)
    pm.setAttr("persp.translateZ", 326)

    pm.setAttr("perspShape.centerOfInterest", 463)
    
    topNodes=cmds.ls(assemblies=1,type='transform')
    print("topNodes= "+str(topNodes))
    for node in topNodes:
        try:
            cmds.setAttr(node+".visibility", 0)
        except RuntimeError:
            pass
            
    model=cmds.ls('*:model')
    print("model= "+str(model))
    cmds.setAttr(model[0]+".visibility", 1)
    model_Child=cmds.ls(model[0],dag=1)
    for node in model_Child:
        try:
            cmds.setAttr(node+".visibility", 1)
        except RuntimeError:
            pass
    
    #pm.setAttr("magF_Rig:secondaryJointCtrl.visibility", 0)
    
    startF=int(cmds.playbackOptions(minTime=1, query=1))
    print("startF= "+str(startF))
    endF=int(cmds.playbackOptions(query=1, maxTime=1))
    print("endF= "+str(endF))
    
    #sceneName=cmds.file( q=True, sceneName=True,shortName=True )
    sceneName = os.path.basename(mayaPath)
    root_ext_pair = os.path.splitext(sceneName)
    sceneNameonly=root_ext_pair[0]
    
    #mayaPath=cmds.file( q=True, sceneName=True,shortName=False )
    print("mayaPath= "+mayaPath)
    mayaPath_Arr=mayaPath.split("/")
    mayaPath_Arr_len=len(mayaPath_Arr)
    last1dirName=mayaPath_Arr[mayaPath_Arr_len-2]
    print("last1dirName= "+last1dirName)
    last2dirName=mayaPath_Arr[mayaPath_Arr_len-3]
    print("last2dirName= "+last2dirName)
    
    motionName=""
    if(sceneNameonly in dict):
        motionName=dict[sceneNameonly]
        sys.stdout.write("motionName= "+motionName.encode('cp932')+"\n")
    
        motionName932=motionName.encode('cp932')
        print("motionName932= "+motionName932)
        #motionNameUTF8=motionName.encode('utf_8')
        #print("motionNameUTF8= "+motionNameUTF8)
    videoOutPath="/"+sceneNameonly+".avi"
    videoOutPath=u"D:/Projects/mocap_data"+"/"+last2dirName+"/"+sceneNameonly+u"__"+motionName+u"__"+u".avi"
    print("videoOutPath= "+videoOutPath)
    cmds.playblast(fp=4, clearCache=1, format='avi', sequenceTime=0, showOrnaments=1, percent=50, filename=videoOutPath, viewer=1, startTime=startF, endTime=endF, quality=70, compression="none" ,forceOverwrite=1)
    
#Simple_Avi_Export()


def dirAllOpenAndExport(dir_path):
    import os
    import re
    for current_dir, sub_dirs, files_list in os.walk(dir_path): 
      for file_name in files_list: 
        fullpath=os.path.join(current_dir,file_name)
        fullpath=os.path.abspath(fullpath)
        fullpath=re.sub(r'\\', '/', fullpath)
        print("fullpath= "+fullpath)
        
        root_ext_pair = os.path.splitext(fullpath)
        ExtentionOnly=root_ext_pair[1]
        if(ExtentionOnly==".ma"):
            
            #cmds.file(fullpath, ignoreVersion=1, typ="mayaAscii", options="v=0;", o=1, f=1)
            cmds.file(new=1, f=1)
            cmds.file(fullpath, ignoreVersion=1, type="mayaAscii", namespace="ref", r=1, gl=1, mergeNamespacesOnClash=False, options="v=0;")
            
            Simple_Avi_Export(fullpath)
dirAllOpenAndExport("D:/Projects/mocap_data/" )

#AdvancedLocomotionSystem #UE4 #UE4Study #NierAutomata2B #2B #UE4 #humanoid rig #VirtualbornSetting

Nier Automata 2B Data is here

[Download Now] 2B Nier:Automata (original model) – DeviantArt

https://www.deviantart.com/shinylightbulb/art/Download-Now-2B-Nier-Automata-original-model-670383209

XPS.XPS convert in Blender

XPS tools 2.0.2 (for Blender 2.80+) by johnzero7 on DeviantArt

https://www.deviantart.com/johnzero7/journal/XPS-tools-2-0-2-for-Blender-2-80-834572824

OLD Blender2.80 Download is here

https://download.blender.org/release/Blender2.80/

export xps to fbx

open in Maya

1,chengeJoint Name and Mesh Name.

2,load UE4_Mannequin_Female.fbx from UE4.26

3,メッシュフォルムが崩れないようにできるだけ回転のみで2BjointをUE4ジョイントに合わせる。

4,2Bジョイントとメッシュのグループを複製してその形状のメッシュを作成

5,2Bジョイントのジョイントを消して変形された2Bメッシュを残す

6, 残った2BメッシュをUE4ジョイントとグループ化

7,SkinBind

8,SkinWeightCopy 2BJoint Mesh > New2B UE4 Joint Mesh

Export fbx

UE4 humanoid rig Virtual born Setting

Select root Add Virtual Bone >root Name:Curves
Select Curves Add Virtual Bone >root Name:ik_foot_root
Select ik_foot_root Add Virtual Bone >foot_r Name:ik_foot_r
Select ik_foot_root Add Virtual Bone >foot_l Name:ik_foot_l

Select ik_foot_r Add Virtual Bone >foot_r Name:ik_foot_r_offset
Select ik_foot_l Add Virtual Bone >foot_l Name:ik_foot_l_offset

Select ik_foot_r Add Virtual Bone >calf_r Name:ik_knee_target_r
Select ik_foot_l Add Virtual Bone >calf_l Name:ik_knee_target_l

Select root Add Virtual Bone >foot_r Name:foot_target_r
Select root Add Virtual Bone >foot_l Name:foot_target_l

Option>Show Retargeting Option
Recursively Set Translation Retargeting Skeleton
root > Translation Retargeting go to>Animation
Pelvis > Translation Retargeting go to>Animation

ここでALS_AnimBPを右クリックしてリターゲット
ALS> N2Bで置換しつつリターゲット

How to integrate MetaHumans with ALSV4 | Part 1/3 | UE4
18:04/35:47
ALS_N2B_CharactorBP>EventGraph
ParentTick > Update Coloring System Disconnect
ParentTick x Update Coloring System

ALS_N2B_CharactorBP>Construction Script
Set MatserPose Component > Set Dynamic Material Disconnect
Set MatserPose Component x Set Dynamic Material

How to integrate MetaHumans with ALSV4 | Part 1/3 | UE4
24:26/35:47

N2B_AnimBP Open
Window>FindResult input ik_foot
FindResult Replace All hand
ik_foot_r > VB ik_foot_r
ik_foot_l > VB ik_foot_l
ik_foot_root >VB ik_foot_root

goto AnimGraph
Go to Left Side OverLayLayer >Overlay States> Feminine >Copy All
Back Overlay States>Default>Past

Retarget > ALS_Montage Action All Select
Replace
ALS >N2B
Retarget

Open ALS_N2B_CharactorBP
window>FindResult
“switch on overlay state”
Result2,3,4,5, open
ALS_Montage >N2B_Montage

膝がかなり離れている場合
If your knees are far apart
N2B_AnimBP >AnimGraph>Linked Anim Layer Foot IK
Modify Knee Targets Comment
Transform(Modify)Bone >Translation 20 10 5
Transform(Modify)Bone >Translation -20 -10 -5

Montage is not good high root motion
FBX export And Delete root joint keyframe animation
N2B_N_LandRoll_F
N2B_N_Mantle_1m_LH
N2B_N_Mantle_1m_RH
N2B_N_Mantle_2m
(mean ‘s root joint is Go to Change “SK_Manequin_Female” Then Can’t Delete UE4 Root Motion)

AdvancedLocomotion用のキャラのスキニングがやっとできてきた。

結局、無理なポーズはmayaに読み込んでそのポーズでスキニング調整しないとだめだった。

これでもできてるほうでもっとぐちゃぐちゃになってたので。

パンツの方のスキニングやらサイズやら調整したが、

からだのお尻のスキニングがぐちゃぐちゃだったからどうやってもだめだった。

お尻らへんの頂点を選択してスキンウェイトハンマーしたら変な形状を保とうとしなくなって

そのスキニングをパンツへコピーしたらできた。

テクスチャストリーミングのプールがバジェットが23Mibを超えています UE5

https://answers.unrealengine.com/questions/373397/texture-streaming-pool-over%E3%81%8B%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%82%8B.html

によると

コンソールコマンド『r.Streaming.PoolSize』を使用することにより、プールサイズ上限を引き上げることができるようです。これは一時的なものなので、永続的な設定が必要であればiniファイル内に記述しておく必要があります。

また

海外の掲示板で defaultscalability.ini 内のr.Streaming.PoolSizeを変更してみるやり方もあったので試していますが、 それ以降も続けて表示がでなくなるらしい。

Project\Saved\Temp\Win64\Engine\Config\BaseScalability.ini

307 line

r.Streaming.PoolSize=400

r.Streaming.PoolSize=800

にした




[ScalabilitySettings]
PerfIndexThresholds_ResolutionQuality="GPU 18 42 115"
PerfIndexThresholds_ViewDistanceQuality="Min 18 42 105"
PerfIndexThresholds_AntiAliasingQuality="GPU 18 42 115"
PerfIndexThresholds_ShadowQuality="Min 18 42 105"
PerfIndexThresholds_PostProcessQuality="GPU 18 42 115"
PerfIndexThresholds_TextureQuality="GPU 18 42 115"
PerfIndexThresholds_EffectsQuality="Min 18 42 105"
PerfIndexThresholds_FoliageQuality="GPU 18 42 115"
PerfIndexThresholds_ShadingQuality="GPU 18 42 115"

PerfIndexValues_ResolutionQuality="50 71 87 100 100"

[AntiAliasingQuality@0]
r.PostProcessAAQuality=0

[AntiAliasingQuality@1]
r.PostProcessAAQuality=2

[AntiAliasingQuality@2]
r.PostProcessAAQuality=3

[AntiAliasingQuality@3]
r.PostProcessAAQuality=4

[AntiAliasingQuality@Cine]
r.PostProcessAAQuality=6


[ViewDistanceQuality@0]
r.SkeletalMeshLODBias=2
r.ViewDistanceScale=0.4

[ViewDistanceQuality@1]
r.SkeletalMeshLODBias=1
r.ViewDistanceScale=0.6

[ViewDistanceQuality@2]
r.SkeletalMeshLODBias=0
r.ViewDistanceScale=0.8

[ViewDistanceQuality@3]
r.SkeletalMeshLODBias=0
r.ViewDistanceScale=1.0

[ViewDistanceQuality@Cine]
r.SkeletalMeshLODBias=0
r.ViewDistanceScale=10.0


[ShadowQuality@0]
r.LightFunctionQuality=0
r.ShadowQuality=0
r.Shadow.CSM.MaxCascades=1
r.Shadow.MaxResolution=512
r.Shadow.MaxCSMResolution=512
r.Shadow.RadiusThreshold=0.06
r.Shadow.DistanceScale=0.6
r.Shadow.CSM.TransitionScale=0
r.Shadow.PreShadowResolutionFactor=0.5
r.DistanceFieldShadowing=0
r.DistanceFieldAO=0
r.VolumetricFog=0
r.LightMaxDrawDistanceScale=0
r.CapsuleShadows=0

[ShadowQuality@1]
r.LightFunctionQuality=1
r.ShadowQuality=3
r.Shadow.CSM.MaxCascades=1
r.Shadow.MaxResolution=1024
r.Shadow.MaxCSMResolution=1024
r.Shadow.RadiusThreshold=0.05
r.Shadow.DistanceScale=0.7
r.Shadow.CSM.TransitionScale=0.25
r.Shadow.PreShadowResolutionFactor=0.5
r.DistanceFieldShadowing=0
r.DistanceFieldAO=0
r.VolumetricFog=0
r.LightMaxDrawDistanceScale=.5
r.CapsuleShadows=1

[ShadowQuality@2]
r.LightFunctionQuality=1
r.ShadowQuality=5
r.Shadow.CSM.MaxCascades=4
r.Shadow.MaxResolution=1024
r.Shadow.MaxCSMResolution=2048
r.Shadow.RadiusThreshold=0.04
r.Shadow.DistanceScale=0.85
r.Shadow.CSM.TransitionScale=0.8
r.Shadow.PreShadowResolutionFactor=0.5
r.DistanceFieldShadowing=1
r.DistanceFieldAO=1
r.AOQuality=1
r.VolumetricFog=1
r.VolumetricFog.GridPixelSize=16
r.VolumetricFog.GridSizeZ=64
r.VolumetricFog.HistoryMissSupersampleCount=4
r.LightMaxDrawDistanceScale=1
r.CapsuleShadows=1

[ShadowQuality@3]
r.LightFunctionQuality=1
r.ShadowQuality=5
r.Shadow.CSM.MaxCascades=10
r.Shadow.MaxResolution=2048
r.Shadow.MaxCSMResolution=2048
r.Shadow.RadiusThreshold=0.01
r.Shadow.DistanceScale=1.0
r.Shadow.CSM.TransitionScale=1.0
r.Shadow.PreShadowResolutionFactor=1.0
r.DistanceFieldShadowing=1
r.DistanceFieldAO=1
r.AOQuality=2
r.VolumetricFog=1
r.VolumetricFog.GridPixelSize=8
r.VolumetricFog.GridSizeZ=128
r.VolumetricFog.HistoryMissSupersampleCount=4
r.LightMaxDrawDistanceScale=1
r.CapsuleShadows=1

[ShadowQuality@Cine]
r.LightFunctionQuality=1
r.ShadowQuality=5
r.Shadow.CSM.MaxCascades=10
r.Shadow.MaxResolution=4096
r.Shadow.MaxCSMResolution=4096
r.Shadow.RadiusThreshold=0
r.Shadow.DistanceScale=1.0
r.Shadow.CSM.TransitionScale=1.0
r.Shadow.PreShadowResolutionFactor=1.0
r.DistanceFieldShadowing=1
r.DistanceFieldAO=1
r.AOQuality=2
r.VolumetricFog=1
r.VolumetricFog.GridPixelSize=4
r.VolumetricFog.GridSizeZ=128
r.VolumetricFog.HistoryMissSupersampleCount=16
r.LightMaxDrawDistanceScale=1
r.CapsuleShadows=1


[PostProcessQuality@0]
r.MotionBlurQuality=0
r.AmbientOcclusionMipLevelFactor=1.0
r.AmbientOcclusionMaxQuality=0
r.AmbientOcclusionLevels=0
r.AmbientOcclusionRadiusScale=1.2
r.DepthOfFieldQuality=0
r.RenderTargetPoolMin=300
r.LensFlareQuality=0
r.SceneColorFringeQuality=0
r.EyeAdaptationQuality=2
r.BloomQuality=4
r.FastBlurThreshold=0
r.Upscale.Quality=1
r.Tonemapper.GrainQuantization=0
r.LightShaftQuality=0
r.Filter.SizeScale=0.6
r.Tonemapper.Quality=0

[PostProcessQuality@1]
r.MotionBlurQuality=3
r.AmbientOcclusionMipLevelFactor=1.0
r.AmbientOcclusionMaxQuality=60
r.AmbientOcclusionLevels=-1
r.AmbientOcclusionRadiusScale=1.5
r.DepthOfFieldQuality=1
r.RenderTargetPoolMin=350
r.LensFlareQuality=0
r.SceneColorFringeQuality=0
r.EyeAdaptationQuality=2
r.BloomQuality=4
r.FastBlurThreshold=2
r.Upscale.Quality=2
r.Tonemapper.GrainQuantization=0
r.LightShaftQuality=0
r.Filter.SizeScale=0.7
r.Tonemapper.Quality=2

r.DOF.Gather.AccumulatorQuality=0        ; lower gathering accumulator quality
r.DOF.Gather.PostfilterMethod=2          ; Max3x3 postfilering method
r.DOF.Gather.EnableBokehSettings=0       ; no bokeh simulation when gathering
r.DOF.Gather.RingCount=3                 ; low number of samples when gathering
r.DOF.Scatter.ForegroundCompositing=0    ; no foreground scattering
r.DOF.Scatter.BackgroundCompositing=0    ; no foreground scattering
r.DOF.Recombine.Quality=0                ; no slight out of focus
r.DOF.TemporalAAQuality=0                ; faster temporal accumulation
r.DOF.Kernel.MaxForegroundRadius=0.006   ; required because low gathering and no scattering and not looking great at 1080p
r.DOF.Kernel.MaxBackgroundRadius=0.006   ; required because low gathering and no scattering and not looking great at 1080p

[PostProcessQuality@2]
r.MotionBlurQuality=3
r.AmbientOcclusionMipLevelFactor=0.6
r.AmbientOcclusionMaxQuality=100
r.AmbientOcclusionLevels=-1
r.AmbientOcclusionRadiusScale=1.5
r.DepthOfFieldQuality=2
r.RenderTargetPoolMin=400
r.LensFlareQuality=2
r.SceneColorFringeQuality=1
r.EyeAdaptationQuality=2
r.BloomQuality=5
r.FastBlurThreshold=3
r.Upscale.Quality=2
r.Tonemapper.GrainQuantization=1
r.LightShaftQuality=1
r.Filter.SizeScale=0.8
r.Tonemapper.Quality=5

r.DOF.Gather.AccumulatorQuality=0        ; lower gathering accumulator quality
r.DOF.Gather.PostfilterMethod=2          ; Max3x3 postfilering method
r.DOF.Gather.EnableBokehSettings=0       ; no bokeh simulation when gathering
r.DOF.Gather.RingCount=4                 ; medium number of samples when gathering
r.DOF.Scatter.ForegroundCompositing=1    ; additive foreground scattering
r.DOF.Scatter.BackgroundCompositing=1    ; no background occlusion
r.DOF.Scatter.EnableBokehSettings=0      ; no bokeh simulation when scattering
r.DOF.Scatter.MaxSpriteRatio=0.04        ; only a maximum of 4% of scattered bokeh
r.DOF.Recombine.Quality=0                ; no slight out of focus
r.DOF.TemporalAAQuality=0                ; faster temporal accumulation
r.DOF.Kernel.MaxForegroundRadius=0.012   ; required because of AccumulatorQuality=0
r.DOF.Kernel.MaxBackgroundRadius=0.012   ; required because of AccumulatorQuality=0

[PostProcessQuality@3]
r.MotionBlurQuality=4
r.AmbientOcclusionMipLevelFactor=0.4
r.AmbientOcclusionMaxQuality=100
r.AmbientOcclusionLevels=-1
r.AmbientOcclusionRadiusScale=1.0
r.DepthOfFieldQuality=2
r.RenderTargetPoolMin=400
r.LensFlareQuality=2
r.SceneColorFringeQuality=1
r.EyeAdaptationQuality=2
r.BloomQuality=5
r.FastBlurThreshold=100
r.Upscale.Quality=3
r.Tonemapper.GrainQuantization=1
r.LightShaftQuality=1
r.Filter.SizeScale=1
r.Tonemapper.Quality=5

r.DOF.Gather.AccumulatorQuality=1        ; higher gathering accumulator quality
r.DOF.Gather.PostfilterMethod=1          ; Median3x3 postfilering method
r.DOF.Gather.EnableBokehSettings=0       ; no bokeh simulation when gathering
r.DOF.Gather.RingCount=4                 ; medium number of samples when gathering
r.DOF.Scatter.ForegroundCompositing=1    ; additive foreground scattering
r.DOF.Scatter.BackgroundCompositing=2    ; additive background scattering
r.DOF.Scatter.EnableBokehSettings=1      ; bokeh simulation when scattering
r.DOF.Scatter.MaxSpriteRatio=0.1         ; only a maximum of 10% of scattered bokeh
r.DOF.Recombine.Quality=1                ; cheap slight out of focus
r.DOF.Recombine.EnableBokehSettings=0    ; no bokeh simulation on slight out of focus
r.DOF.TemporalAAQuality=1                ; more stable temporal accumulation
r.DOF.Kernel.MaxForegroundRadius=0.025
r.DOF.Kernel.MaxBackgroundRadius=0.025


[PostProcessQuality@Cine]
r.MotionBlurQuality=4
r.AmbientOcclusionMipLevelFactor=0.4
r.AmbientOcclusionMaxQuality=100
r.AmbientOcclusionLevels=-1
r.AmbientOcclusionRadiusScale=1.0
r.GTAO.Numangles=4
r.DepthOfFieldQuality=4
r.RenderTargetPoolMin=1000
r.LensFlareQuality=3
r.SceneColorFringeQuality=1
r.EyeAdaptationQuality=2
r.BloomQuality=5
r.FastBlurThreshold=100
r.Upscale.Quality=3
r.Tonemapper.GrainQuantization=1
r.LightShaftQuality=1
r.Filter.SizeScale=1
r.Tonemapper.Quality=5

r.DOF.Gather.AccumulatorQuality=1        ; higher gathering accumulator quality
r.DOF.Gather.PostfilterMethod=1          ; Median3x3 postfilering method
r.DOF.Gather.EnableBokehSettings=1       ; bokeh simulation when gathering
r.DOF.Gather.RingCount=5                 ; high number of samples when gathering
r.DOF.Scatter.ForegroundCompositing=1    ; additive foreground scattering
r.DOF.Scatter.BackgroundCompositing=2    ; background scattering occlusion
r.DOF.Scatter.EnableBokehSettings=1      ; no bokeh simulation when scattering
r.DOF.Scatter.MaxSpriteRatio=0.25        ; only a maximum of 10% of scattered bokeh
r.DOF.Recombine.Quality=2                ; highest slight out of focus
r.DOF.Recombine.EnableBokehSettings=1    ; bokeh simulation on slight out of focus
r.DOF.TemporalAAQuality=1                ; more stable temporal accumulation
r.DOF.Kernel.MaxForegroundRadius=0.025
r.DOF.Kernel.MaxBackgroundRadius=0.025




[TextureQuality@0]
r.Streaming.MipBias=16
r.Streaming.AmortizeCPUToGPUCopy=1
r.Streaming.MaxNumTexturesToStreamPerFrame=1
r.Streaming.Boost=0.3
r.MaxAnisotropy=0
r.VT.MaxAnisotropy=4
r.Streaming.LimitPoolSizeToVRAM=1
r.Streaming.PoolSize=400
r.Streaming.MaxEffectiveScreenSize=0

[TextureQuality@1]
r.Streaming.MipBias=1
r.Streaming.AmortizeCPUToGPUCopy=0
r.Streaming.MaxNumTexturesToStreamPerFrame=0
r.Streaming.Boost=1
r.MaxAnisotropy=2
r.VT.MaxAnisotropy=4
r.Streaming.LimitPoolSizeToVRAM=1
r.Streaming.PoolSize=600
r.Streaming.MaxEffectiveScreenSize=0

[TextureQuality@2]
r.Streaming.MipBias=0
r.Streaming.AmortizeCPUToGPUCopy=0
r.Streaming.MaxNumTexturesToStreamPerFrame=0
r.Streaming.Boost=1
r.MaxAnisotropy=4
r.VT.MaxAnisotropy=8
r.Streaming.LimitPoolSizeToVRAM=1
r.Streaming.PoolSize=800
r.Streaming.MaxEffectiveScreenSize=0

[TextureQuality@3]
r.Streaming.MipBias=0
r.Streaming.AmortizeCPUToGPUCopy=0
r.Streaming.MaxNumTexturesToStreamPerFrame=0
r.Streaming.Boost=1
r.MaxAnisotropy=8
r.VT.MaxAnisotropy=8
r.Streaming.LimitPoolSizeToVRAM=0
r.Streaming.PoolSize=1000
r.Streaming.MaxEffectiveScreenSize=0

[TextureQuality@Cine]
r.Streaming.MipBias=0
r.Streaming.AmortizeCPUToGPUCopy=0
r.Streaming.MaxNumTexturesToStreamPerFrame=0
r.Streaming.Boost=1
r.MaxAnisotropy=8
r.VT.MaxAnisotropy=8
r.Streaming.LimitPoolSizeToVRAM=0
r.Streaming.PoolSize=3000
r.Streaming.MaxEffectiveScreenSize=0


[EffectsQuality@0]
r.TranslucencyLightingVolumeDim=24
r.RefractionQuality=0
r.SSR.Quality=0
r.SSR.HalfResSceneColor=1
r.SceneColorFormat=3
r.DetailMode=0
r.TranslucencyVolumeBlur=0
r.MaterialQualityLevel=0 ; Low quality
r.AnisotropicMaterials=0
r.SSS.Scale=0
r.SSS.SampleSet=0
r.SSS.Quality=0
r.SSS.HalfRes=1
r.SSGI.Quality=0
r.EmitterSpawnRateScale=0.125
r.ParticleLightQuality=0
r.SkyAtmosphere.AerialPerspectiveLUT.FastApplyOnOpaque=1 ; Always have FastSkyLUT 1 in this case to avoid wrong sky
r.SkyAtmosphere.AerialPerspectiveLUT.SampleCountMaxPerSlice=1
r.SkyAtmosphere.AerialPerspectiveLUT.DepthResolution=8.0
r.SkyAtmosphere.FastSkyLUT=1
r.SkyAtmosphere.FastSkyLUT.SampleCountMin=2.0
r.SkyAtmosphere.FastSkyLUT.SampleCountMax=16.0
r.SkyAtmosphere.SampleCountMin=2.0
r.SkyAtmosphere.SampleCountMax=16.0
r.SkyAtmosphere.TransmittanceLUT.UseSmallFormat=1
r.SkyAtmosphere.TransmittanceLUT.SampleCount=10.0
r.SkyAtmosphere.MultiScatteringLUT.SampleCount=15.0
r.SkyLight.RealTimeReflectionCapture=0
fx.Niagara.QualityLevel=0

[EffectsQuality@1]
r.TranslucencyLightingVolumeDim=32
r.RefractionQuality=0
r.SSR.Quality=0
r.SSR.HalfResSceneColor=1
r.SceneColorFormat=3
r.DetailMode=1
r.TranslucencyVolumeBlur=0
r.MaterialQualityLevel=2 ; Medium quality
r.AnisotropicMaterials=0
r.SSS.Scale=0.75
r.SSS.SampleSet=0
r.SSS.Quality=0
r.SSS.HalfRes=1
r.SSGI.Quality=1
r.EmitterSpawnRateScale=0.25
r.ParticleLightQuality=0
r.SkyAtmosphere.AerialPerspectiveLUT.FastApplyOnOpaque=1 ; Always have FastSkyLUT 1 in this case to avoid wrong sky
r.SkyAtmosphere.AerialPerspectiveLUT.SampleCountMaxPerSlice=1
r.SkyAtmosphere.AerialPerspectiveLUT.DepthResolution=16.0
r.SkyAtmosphere.FastSkyLUT=1
r.SkyAtmosphere.FastSkyLUT.SampleCountMin=4.0
r.SkyAtmosphere.FastSkyLUT.SampleCountMax=32.0
r.SkyAtmosphere.SampleCountMin=4.0
r.SkyAtmosphere.SampleCountMax=32.0
r.SkyAtmosphere.TransmittanceLUT.UseSmallFormat=0
r.SkyAtmosphere.TransmittanceLUT.SampleCount=10.0
r.SkyAtmosphere.MultiScatteringLUT.SampleCount=15.0
r.SkyLight.RealTimeReflectionCapture=0
fx.Niagara.QualityLevel=1

[EffectsQuality@2]
r.TranslucencyLightingVolumeDim=48
r.RefractionQuality=2
r.SSR.Quality=2
r.SSR.HalfResSceneColor=1
r.SceneColorFormat=3
r.DetailMode=1
r.TranslucencyVolumeBlur=1
r.MaterialQualityLevel=1 ; High quality
r.AnisotropicMaterials=1
r.SSS.Scale=1
r.SSS.SampleSet=1
r.SSS.Quality=-1
r.SSS.HalfRes=1
r.SSGI.Quality=2
r.EmitterSpawnRateScale=0.5
r.ParticleLightQuality=1
r.SkyAtmosphere.AerialPerspectiveLUT.FastApplyOnOpaque=1 ; Always have FastSkyLUT 1 in this case to avoid wrong sky
r.SkyAtmosphere.AerialPerspectiveLUT.SampleCountMaxPerSlice=2
r.SkyAtmosphere.AerialPerspectiveLUT.DepthResolution=16.0
r.SkyAtmosphere.FastSkyLUT=1
r.SkyAtmosphere.FastSkyLUT.SampleCountMin=4.0
r.SkyAtmosphere.FastSkyLUT.SampleCountMax=64.0
r.SkyAtmosphere.SampleCountMin=4.0
r.SkyAtmosphere.SampleCountMax=64.0
r.SkyAtmosphere.TransmittanceLUT.UseSmallFormat=0
r.SkyAtmosphere.TransmittanceLUT.SampleCount=10.0
r.SkyAtmosphere.MultiScatteringLUT.SampleCount=15.0
fx.Niagara.QualityLevel=2

[EffectsQuality@3]
r.TranslucencyLightingVolumeDim=64
r.RefractionQuality=2
r.SSR.Quality=3
r.SSR.HalfResSceneColor=0
r.SceneColorFormat=4
r.DetailMode=2
r.TranslucencyVolumeBlur=1
r.MaterialQualityLevel=1 ; High quality
r.AnisotropicMaterials=1
r.SSS.Scale=1
r.SSS.SampleSet=2
r.SSS.Quality=1
r.SSS.HalfRes=0
r.SSGI.Quality=3
r.EmitterSpawnRateScale=1.0
r.ParticleLightQuality=2
r.SkyAtmosphere.AerialPerspectiveLUT.FastApplyOnOpaque=1 ; Always have FastSkyLUT 1 in this case to avoid wrong sky
r.SkyAtmosphere.AerialPerspectiveLUT.SampleCountMaxPerSlice=4
r.SkyAtmosphere.AerialPerspectiveLUT.DepthResolution=16.0
r.SkyAtmosphere.FastSkyLUT=1
r.SkyAtmosphere.FastSkyLUT.SampleCountMin=4.0
r.SkyAtmosphere.FastSkyLUT.SampleCountMax=128.0
r.SkyAtmosphere.SampleCountMin=4.0
r.SkyAtmosphere.SampleCountMax=128.0
r.SkyAtmosphere.TransmittanceLUT.UseSmallFormat=0
r.SkyAtmosphere.TransmittanceLUT.SampleCount=10.0
r.SkyAtmosphere.MultiScatteringLUT.SampleCount=15.0
fx.Niagara.QualityLevel=3

[EffectsQuality@Cine]
r.TranslucencyLightingVolumeDim=64
r.RefractionQuality=2
r.SSR.Quality=4
r.SSR.HalfResSceneColor=0
r.SceneColorFormat=4
r.DetailMode=2
r.TranslucencyVolumeBlur=1
r.MaterialQualityLevel=1 ; High quality
r.AnisotropicMaterials=1
r.SSS.Scale=1
r.SSS.SampleSet=2
r.SSS.Quality=1
r.SSS.HalfRes=0
r.SSGI.Quality=4
r.EmitterSpawnRateScale=1.0
r.ParticleLightQuality=2
r.SkyAtmosphere.AerialPerspectiveLUT.FastApplyOnOpaque=0
r.SkyAtmosphere.AerialPerspectiveLUT.SampleCountMaxPerSlice=8
r.SkyAtmosphere.AerialPerspectiveLUT.DepthResolution=32.0
r.SkyAtmosphere.FastSkyLUT=0
r.SkyAtmosphere.FastSkyLUT.SampleCountMin=4.0
r.SkyAtmosphere.FastSkyLUT.SampleCountMax=256.0
r.SkyAtmosphere.SampleCountMin=8.0
r.SkyAtmosphere.SampleCountMax=256.0
r.SkyAtmosphere.TransmittanceLUT.UseSmallFormat=0
r.SkyAtmosphere.TransmittanceLUT.SampleCount=30.0
r.SkyAtmosphere.MultiScatteringLUT.SampleCount=20.0
fx.Niagara.QualityLevel=4


[FoliageQuality@0]
foliage.DensityScale=0
grass.DensityScale=0

[FoliageQuality@1]
foliage.DensityScale=0.4
grass.DensityScale=0.4

[FoliageQuality@2]
foliage.DensityScale=0.8
grass.DensityScale=0.8

[FoliageQuality@3]
foliage.DensityScale=1.0
grass.DensityScale=1.0

[FoliageQuality@Cine]
foliage.DensityScale=1.0
grass.DensityScale=1.0


[ShadingQuality@0]
r.HairStrands.SkyLighting.IntegrationType=2
r.HairStrands.SkyAO.SampleCount=4
r.HairStrands.Visibility.MSAA.SamplePerPixel=1
r.HairStrands.Interpolation.UseSingleGuide=1

[ShadingQuality@1]
r.HairStrands.SkyLighting.IntegrationType=2
r.HairStrands.SkyAO.SampleCount=4
r.HairStrands.Visibility.MSAA.SamplePerPixel=1
r.HairStrands.Interpolation.UseSingleGuide=1

[ShadingQuality@2]
r.HairStrands.SkyLighting.IntegrationType=2
r.HairStrands.SkyAO.SampleCount=4
r.HairStrands.Visibility.MSAA.SamplePerPixel=4
r.HairStrands.Interpolation.UseSingleGuide=1

[ShadingQuality@3]
r.HairStrands.SkyLighting.IntegrationType=2
r.HairStrands.SkyAO.SampleCount=4
r.HairStrands.Visibility.MSAA.SamplePerPixel=4
r.HairStrands.Interpolation.UseSingleGuide=0

[ShadingQuality@Cine]
r.HairStrands.SkyLighting.IntegrationType=0
r.HairStrands.SkyAO.SampleCount=8
r.HairStrands.Visibility.MSAA.SamplePerPixel=8
r.HairStrands.Interpolation.UseSingleGuide=0

揺れもの YURAYURA.pyのおすすめ設定方法


A-s-C-e-n-S-i-o-N本家さん

http://a-s-c-e-n-s-i-o-n.blogspot.com/2017/12/maya-yurayurapy.html

maya : 骨にヘアを揺れ物シミュレーションするツール YURAYURA.pyの説明
髪の毛などの数珠繋ぎ階層にヘアシミュレーションをかける揺れ物ツールです。

YURAYURAのおすすめ設定というか、揺れすぎていろんな破滅を起こすので
一番ゆれない状態から設定していくのがいいかもしれないと思い、
一番揺れない設定にしてみた。(ゆれるけど)
といってもnHAIRの設定を見たらわかる。

https://knowledge.autodesk.com/ja/support/maya/learn-explore/caas/CloudHelp/cloudhelp/2016/JPN/Maya/files/GUID-89B58075-7927-4117-8D5E-5FECE5669108-htm.html

■■■GENERATE■■■:
髪の毛のルートを選択して、GENERATEボタンを押すと
YURAYURAシミュレーションセットが作られます。
複数選択でき、一度作成した後でも追加で使用できます。

■■■SETTING■■■:

■Gravity:
重力
■Start Curve Attract
開始カーブに引き付け(Start Curve Attract)
現在のヘアの位置を(変形する)開始位置へ引き付ける量を決定します。このアトリビュートは、たとえば、硬めのヘアやキャラクタとともに動くヘアの場合など、多くのヘア ワークフローで役立ちます。さらに、キーフレームを設定されたアニメーションを開始カーブに配置する場合、開始カーブに引き付け(Start Curve Attract)アトリビュートを使用して、シミュレーションと開始カーブ アニメーションをブレンドすることができます。

流れるような長いヘアの場合には、通常、開始カーブに引き付け(Start Curve Attract)の値はゼロのままにします。ただし、短いヘアの場合は、ヘアの十分な剛性を保つことが困難になる場合があります。ヘアの剛性を非常に大きくして、同時に、いくつかのダイナミックなプロパティを持たせる必要がある場合、ゼロより大きい値を使用します。1.0 の値のとき、ヘア位置はカーブ開始位置です(トランスフォームされる毛根からの相対位置になります)。衝突およびフォースだけは、ヘアを偏向させます。Start Curve Attract がない場合、Substep と Damp の値を増やす必要があります(特に、ヘアごとの CV の数が多いとき)。

■Attraction Damp:
引き付けのダンプ(Attraction Damp)
開始カーブに引き付け(Start Curve Attract)のエフェクトをダンプし、ヘアをカーブの開始位置の方に移動させて、ヘアの速度を遅くします。これは、ヘアの弾力性(開始カーブに引き付け(Start Curve Attract)の値が高い場合に発生)を小さくしたい場合や、アニメートされたヘアの頂点にダイナミック フィールドを適用したい場合に便利です。引き付けのダンプ(Attraction Damp)を 1 にすると、開始カーブの方に移動するヘアの動きは完全にダンプされ、開始位置(Start Positions)とフィールド フォースだけをそのままにして、後から任意でその動きにインフルエンスを及ぼせるようにします。

■Drag:
ドラッグ(Drag)
これは、シミュレーションを安定させるのに役立つだけではなく、空気摩擦をシミュレートします。ドラッグ(Drag)の値が 1.0 のとき、ヘアは慣性のモーションやフォロースルーがないように動作するため、粘度が高い液体の中にあるかのように動きます。
■Tangential Drag:
接線のドラッグ(Tangential Drag)
ヘアの方向に沿ってドラッグする量を指定します。0 に設定すると、ヘアは接線方向またはシェイプの方向に沿った移動において抵抗がなくなります。接線のドラッグ(Tangential Drag)を 1 に設定すると、ドラッグ(Drag)はすべての方向に均一になります。ドラッグ(Drag)のレベルが高く、接線のドラッグ(Tangential Drag)が低い場合、ヘアは水中を移動する蛇のような揺らぎモーションの動きをします。
■Motion Drag:
モーション ドラッグ(Motion Drag)
毛根の動きに相対的なヘア カーブの動きをダンプします。モーション ドラッグ(Motion Drag)の値は、ヘア カーブが毛根に合わせて動く量、またヘアのシェイプが他のフォースに影響される程度を決定します。これにより、Substeps の数を増やさなくても、ボビングやウィグルのようなヘアの余分な動きをダンプすることができます。

たとえば、モーション ドラッグ(Motion Drag)を 1.0 に設定すると、ヘアは毛根に合わせて動くので、周囲の大気をそれに合わせてドラッグしているように見えます。
■Damp:
ダンプ(Damp)
ヘアのベンドおよび伸長の方法に影響する個々のヘアの相対的シェイプの変化をダンピングします。
■Stretch Damp:
伸長のダンプ(Stretch Damp)
ヘア カーブ頂点間の伸長による速度がどのくらいダンピングされるかを指定します。伸長のダンプ(Stretch Damp)を大きくすると、ヘアは弾まずに伸長できます。
■■■MODIFY■■■:
SETTING欄の数値を変更して、下にあるMODIFY SETTING ( REFRESH )
ボタンで適用できます。

■■■COLLIDE■■■:
コリジョンをセットしたい場合は、コリジョンオブジェクトを選択して
ADD COLLIDEボタンを押します。

■■■BAKE■■■:
シミュレーション結果が良さそうであれば、BAKEボタンを押すと
元に選択していた階層すべてのRotateにBake Simulationをかけます。
YURAYURAシミュレーションセットは消去され、UIも閉じます。