紙おいて
ホームを押して、
ねじを緩めて占めなおす。
以上
[unrealenghine,photoshop]HDRは32bitなので16bitに変換しないとPNGに保存できない、8bitに変換しないと TGA に保存できない
Can Not HDR Traslate To TGA even if CopySave
function step_8bit(enabled, withDialog) {
if (enabled != undefined && !enabled)
return;
var dialogMode = (withDialog ? DialogModes.ALL : DialogModes.NO);
var desc1 = new ActionDescriptor();
desc1.putInteger(cTID('Dpth'), 8);
var desc2 = new ActionDescriptor();
desc2.putInteger(cTID('Vrsn'), 6);
desc2.putEnumerated(cTID('Mthd'), sTID("hdrToningMethodType"), sTID("hdrtype4"));
desc2.putDouble(cTID('Rds '), 7.68);
desc2.putDouble(cTID('Thsh'), 0.52959457138863);
desc2.putDouble(cTID('Cntr'), 1);
desc2.putDouble(cTID('Strt'), 20);
desc2.putDouble(cTID('Dtl '), 30);
desc2.putBoolean(cTID('Smoo'), false);
var desc3 = new ActionDescriptor();
desc3.putString(cTID('Nm '), "初期設定");
var list1 = new ActionList();
var desc4 = new ActionDescriptor();
desc4.putDouble(cTID('Hrzn'), 0);
desc4.putDouble(cTID('Vrtc'), 0);
list1.putObject(cTID('CrPt'), desc4);
var desc5 = new ActionDescriptor();
desc5.putDouble(cTID('Hrzn'), 255);
desc5.putDouble(cTID('Vrtc'), 255);
list1.putObject(cTID('CrPt'), desc5);
desc3.putList(cTID('Crv '), list1);
desc2.putObject(sTID("classFXShapeCurve"), cTID('ShpC'), desc3);
desc2.putBoolean(sTID("deghosting"), false);
desc1.putObject(cTID('With'), sTID("hdrOptions"), desc2);
executeAction(sTID('convertMode'), desc1, dialogMode);
};
//save TGA (Can Not HDR Traslate To TGA even if CopySave)
function step4_save_tga(savePath){
step_8bit();
SaveOptions = new TargaSaveOptions();
TargaSaveOptions.alphaChannels = true; //include alpha channels, change to false for none
TargaSaveOptions.resolution = TargaBitsPerPixels.TWENTYFOUR; //options of SIXTEEN or THIRTYTWO
TargaSaveOptions.rleCompression = true; //false for no compression
var saveFile = File(savePath);
app.activeDocument.saveAs(saveFile, TargaSaveOptions, true,Extension.LOWERCASE);
};
//---------------------------------------------------------------------------------
function step1_16bit(enabled, withDialog) {
if (enabled != undefined && !enabled)
return;
var dialogMode = (withDialog ? DialogModes.ALL : DialogModes.NO);
var desc1 = new ActionDescriptor();
desc1.putInteger(cTID('Dpth'), 16);
var desc2 = new ActionDescriptor();
desc2.putInteger(cTID('Vrsn'), 6);
desc2.putEnumerated(cTID('Mthd'), sTID("hdrToningMethodType"), sTID("hdrtype4"));
desc2.putDouble(cTID('Rds '), 7.68);
desc2.putDouble(cTID('Thsh'), 0.52959457138863);
desc2.putDouble(cTID('Cntr'), 1);
desc2.putDouble(cTID('Strt'), 20);
desc2.putDouble(cTID('Dtl '), 30);
desc2.putBoolean(cTID('Smoo'), false);
var desc3 = new ActionDescriptor();
desc3.putString(cTID('Nm '), "初期設定");
var list1 = new ActionList();
var desc4 = new ActionDescriptor();
desc4.putDouble(cTID('Hrzn'), 0);
desc4.putDouble(cTID('Vrtc'), 0);
list1.putObject(cTID('CrPt'), desc4);
var desc5 = new ActionDescriptor();
desc5.putDouble(cTID('Hrzn'), 255);
desc5.putDouble(cTID('Vrtc'), 255);
list1.putObject(cTID('CrPt'), desc5);
desc3.putList(cTID('Crv '), list1);
desc2.putObject(sTID("classFXShapeCurve"), cTID('ShpC'), desc3);
desc2.putBoolean(sTID("deghosting"), false);
desc1.putObject(cTID('With'), sTID("hdrOptions"), desc2);
executeAction(sTID('convertMode'), desc1, dialogMode);
};
//save Png
function step4_save(savePath,enabled, withDialog) {
step1_16bit();
var file_obj = new File(savePath);
var png_opt = new PNGSaveOptions();
png_opt.interlaced = false;
var savedDisplayDialogs = app.displayDialogs;
app.displayDialogs = DialogModes.NO;
activeDoc=app.activeDocument;
app.activeDocument.saveAs(file_obj, png_opt, true, Extension.LOWERCASE);
}
//---------------------------------------------------------------------------------
// save HDR (HDR to HDR)
function step4_save(savePath,enabled, withDialog) {
if (enabled != undefined && !enabled)
return;
var dialogMode = (withDialog ? DialogModes.ALL : DialogModes.NO);
var desc1 = new ActionDescriptor();
desc1.putString(cTID('As '), "Radiance");
desc1.putPath(cTID('In '), new File(savePath));
desc1.putInteger(cTID('DocI'), 70);
desc1.putBoolean(cTID('LwCs'), true);
executeAction(sTID('save'), desc1, dialogMode);
};
参考
Targa形式で保存する
http://www.openspc2.org/book/PhotoshopCC2014/easy/save/010/index.html
[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]’cp932′ codec can’t decode byte 0x83 in position 120: illegal multibyte sequence を解決する方法
#f = open('Info.json', 'r', encoding="utf-8") #maya2018 is not move
import codecs
f = codecs.open('Info.json', 'r', 'utf_8') #maya2022 ok maya2018 ok
[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で出力すると日本語が表示される。
u3042はunicodeオブジェクト
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
によると
コンソールコマンド『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