# -*- coding: utf-8 -*-
from maya import cmds
selection=cmds.ls(sl=True,type="joint")
for sel in selection:
attStr=sel+".radius"
#cmds.setAttr( attStr, 0.5 )
cmds.setAttr( attStr, 0.025 )
ZipLineの長さに応じてモーションの長さRateを調整した UE5
基本はこれを見て作った
17分ぐらいに出てくるBP計算に追加した
Get_ZipLine_Lengthを作った。
3軸上の二点間の距離
BluePrintでルート(平方根)を計算するには、mathモジュールのsqrt関数を使います。
これでZIPLINEが長くても短くてもモーションが終わらない。
テクスチャストリーミングのプールがバジェットが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
UE5 ライティングのみをビルドのボタン
どこいったと思ったらここにあった。ヘッダーメニュー>ビルド>ライティングのみをビルド
弾の当たり判定コリジョンプリセットUE5
たまに含まれるエフェクト用メッシュなども
Customにして全部無視にする。
当たる部分だけをオーバーラップにする。ここではPawn
敵がちゃんとPawnになってることも確認する
発光マテリアルの発光具合がまたかわってるみたい。UE5
1000かけるとやっと発光する感じ
100とかだとこんぐらい あんまり発光感は薄い感じ
プロジェクトフォルダの
「Config」フォルダ内の
「DefaultEngine.ini」ファイルをメモ帳で
[SystemSettings]
r.TonemapperFilm=0
と追記しても旧トーンマッパが使えなかった。
AmbitionEarlyHourSky をUE4からUE5(早期アクセス版)に移行してみた
おかずさんのところで紹介していた方法がなんだかだめで
C:\Program Files\Epic Games\UE_5.0EA\Engine\Binaries\DotNET>"C:\Program Files\Epic Games\UE_5.0EA\Engine\Binaries\DotNET\UnrealBuildTool\UnrealBuildTool.exe" -project="C:\Download\Game\DynamicParaglider_023_UE4_26_SkirtCharaCpp\AmbitionEarlyHourSky5.0\AmbitionEarlyHourSky.uproject" -game -rocket -progress -platforms=Win64-progress -2019 -platforms=Win64
ERROR: No platforms specified for target
ERROR: No platforms specified for target と言われる
- [UE4] C++コードをバッチビルドする方法 https://historia.co.jp/archives/557/
を参考に
これでビルドでけた。
cd C:\Program Files\Epic Games\UE_5.0EA\Engine\Binaries\DotNET\UnrealBuildTool
UnrealBuildTool.exe AmbitionEarlyHourSky Win64 Development "C:\Download\Game\DynamicParaglider_023_UE4_26_SkirtCharaCpp\AmbitionEarlyHourSky5.0\AmbitionEarlyHourSky.uproject" -rocket
結果がこれ。
C:\Program Files\Epic Games\UE_5.0EA\Engine\Binaries\DotNET\UnrealBuildTool>UnrealBuildTool.exe AmbitionEarlyHourSky Win64 Development "C:\Download\Game\DynamicParaglider_023_UE4_26_SkirtCharaCpp\AmbitionEarlyHourSky5.0\AmbitionEarlyHourSky.uproject" -rocket
Win64 using Manual SDK 10.0.17763.0
Creating makefile for AmbitionEarlyHourSky (no existing makefile)
Parsing headers for AmbitionEarlyHourSky
Running UnrealHeaderTool "C:\Download\Game\DynamicParaglider_023_UE4_26_SkirtCharaCpp\AmbitionEarlyHourSky5.0\AmbitionEarlyHourSky.uproject" "C:\Download\Game\DynamicParaglider_023_UE4_26_SkirtCharaCpp\AmbitionEarlyHourSky5.0\Intermediate\Build\Win64\AmbitionEarlyHourSky\Development\AmbitionEarlyHourSky.uhtmanifest" -LogCmds="loginit warning, logexit warning, logdatabase error" -Unattended -WarningsAsErrors -abslog="C:\Users\furcr\AppData\Local\UnrealBuildTool\Log_UHT.txt" -installed
Reflection code generated for AmbitionEarlyHourSky in 5.3679842 seconds
Building AmbitionEarlyHourSky...
Using Visual Studio 2019 14.28.29914 toolchain (C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910) and Windows 10.0.17763.0 SDK (C:\Program Files (x86)\Windows Kits\10).
[Adaptive Build] Excluded from AmbitionEarlyHourSky unity file: MyBlueprintFunctionLibrary.cpp, SaveToText.cpp, TextFileToString.cpp, AmbitionEarlyHourSky.cpp, AmbitionEarlyHourSkyCharacter.cpp, AmbitionEarlyHourSkyGameMode.cpp
Building 19 actions with 16 processes...
[1/19] turbojpeg.dll
[2/19] Default.rc2
[3/19] SharedPCH.Engine.ShadowErrors.cpp
[4/19] AmbitionEarlyHourSky.cpp
[5/19] SaveToText.cpp
[6/19] MyBlueprintFunctionLibrary.cpp
[7/19] AmbitionEarlyHourSky.init.gen.cpp
[8/19] TextFileToString.gen.cpp
[9/19] MyBlueprintFunctionLibrary.gen.cpp
[10/19] AmbitionEarlyHourSkyGameMode.cpp
[11/19] SaveToText.gen.cpp
[12/19] AmbitionEarlyHourSkyCharacter.gen.cpp
[13/19] AmbitionEarlyHourSkyGameMode.gen.cpp
[14/19] AmbitionEarlyHourSkyCharacter.cpp
[15/19] Module.KawaiiPhysics.cpp
[16/19] Module.KawaiiPhysics.gen.cpp
[17/19] TextFileToString.cpp
[18/19] AmbitionEarlyHourSky.exe
ライブラリ C:\Download\Game\DynamicParaglider_023_UE4_26_SkirtCharaCpp\AmbitionEarlyHourSky5.0\Binaries\Win64\AmbitionEarlyHourSky.lib とオブジェクト C:\Download\Game\DynamicParaglider_023_UE4_26_SkirtCharaCpp\AmbitionEarlyHourSky5.0\Binaries\Win64\AmbitionEarlyHourSky.exp を作成中
[19/19] AmbitionEarlyHourSky.target
Total time in Parallel executor: 50.20 seconds
Total execution time: 60.73 seconds
C:\Program Files\Epic Games\UE_5.0EA\Engine\Binaries\DotNET\UnrealBuildTool>
C:\Program Files\Epic Games\UE_5.0EA\Engine\Binaries\DotNET\UnrealBuildTool>UnrealBuildTool.exe AmbitionEarlyHourSky Win64 Development "C:\Download\Game\DynamicParaglider_023_UE4_26_SkirtCharaCpp\AmbitionEarlyHourSky5.0\AmbitionEarlyHourSky.uproject" -rocket -rocket -progress
Win64 using Manual SDK 10.0.17763.0
@progress push 5%
@progress 'Generating code...' 0%
@progress 'Generating code...' 67%
@progress 'Generating code...' 100%
@progress pop
Target is up to date
Total execution time: 0.72 seconds
C:\Program Files\Epic Games\UE_5.0EA\Engine\Binaries\DotNET\UnrealBuildTool>UnrealBuildTool.exe AmbitionEarlyHourSky Win64 Development "C:\Download\Game\DynamicParaglider_023_UE4_26_SkirtCharaCpp\AmbitionEarlyHourSky5.0\AmbitionEarlyHourSky.uproject" -rocket -game -progress
Win64 using Manual SDK 10.0.17763.0
Creating makefile for AmbitionEarlyHourSky (command line arguments changed)
@progress push 5%
@progress 'Generating code...' 0%
@progress 'Generating code...' 67%
@progress 'Generating code...' 100%
@progress pop
Target is up to date
Total execution time: 1.16 seconds
C:\Program Files\Epic Games\UE_5.0EA\Engine\Binaries\DotNET\UnrealBuildTool>UnrealBuildTool.exe AmbitionEarlyHourSky Win64 Development "C:\Download\Game\DynamicParaglider_023_UE4_26_SkirtCharaCpp\AmbitionEarlyHourSky5.0\AmbitionEarlyHourSky.uproject" -rocket -game
Win64 using Manual SDK 10.0.17763.0
Target is up to date
Total execution time: 0.58 seconds
C:\Program Files\Epic Games\UE_5.0EA\Engine\Binaries\DotNET\UnrealBuildTool>UnrealBuildTool.exe AmbitionEarlyHourSky Win64 Development "C:\Download\Game\DynamicParaglider_023_UE4_26_SkirtCharaCpp\AmbitionEarlyHourSky5.0\AmbitionEarlyHourSky.uproject" -rocket
Win64 using Manual SDK 10.0.17763.0
Creating makefile for AmbitionEarlyHourSky (command line arguments changed)
Target is up to date
Total execution time: 1.21 seconds
C:\Program Files\Epic Games\UE_5.0EA\Engine\Binaries\DotNET\UnrealBuildTool>
slnはなんだかおかしいので
AmbitionEarlyHourSky.uproject をダブルクリックしてみた。
起動してる。。。
起動した!!
リンクされたアニメーショングラフのノード
先に同じキャラクターのスケルトンでリンクするアニメーションブループリントABPを作っておくと選択肢にでてくる
UE4Joint Auto Set HumanIK ~UE4のジョイントを自動でHumanIKに登録~
maya2016用
GroupNode
・Mesh
・SK_Mannequin/root
にしてから実行
Pythonで書き直した。2021年12月DragonNightにWaterモーション追加時に追記
Daz StudioのジョイントをHumanIKに追加用
# -*- coding: utf-8 -*-
from maya import cmds
import maya.mel as mel
import re
import pymel.core as pm
def makeHumanIkDef_from_selected_groupName():
selectedGlp=""
characterName=""
selectedArr=cmds.ls(sl=1)
print("selectedArr= "+str(selectedArr))
if(str(selectedArr)=="[]"):
print("You Should Select root Group Node!!!")
else:
selectedGlp=selectedArr[0]
characterName=pm.mel.hikCreateCharacter(selectedGlp)
#evalStr='$characterName = `hikCreateCharacter('+selectedGlp+')`'
#myPythonVar=mel.eval('$tempMelVar=$gMainWindow')
#characterName=mel.eval(evalStr)
print(u"characterName= " + str(characterName))
return characterName,selectedGlp
def LongNameToShortName(LongName):
#childfullpath= |group_meshHIK_Tpose_jointUE4name5|SK_Mannequin|root|hip|spine_01
LongNameArr=LongName.split("|")
LongNameArrLong=len(LongNameArr)
shortName=LongNameArr[LongNameArrLong-1]
return shortName
def Group_in_joint(GroupName,jointName):
print("jointName= "+jointName)
HitJointFullPath=""
groupChild=cmds.ls(GroupName,dag=1,long=1)
for childfullpath in groupChild:
searchStr=r'.*'+'\|'+jointName+r'$'
print("searchStr= "+searchStr +" childfullpath= "+childfullpath)
MatchObj=re.match(searchStr, childfullpath)
MatchBool=bool(MatchObj)
if(MatchBool==True):
HitJointFullPath=childfullpath
print("HitJointFullPath !!!!!!!!= "+HitJointFullPath)
break
#shortjointNameArr=cmds.ls(childfullpath,shortNames=1)
#shortjointName=shortjointNameArr[0]
shortjointName=LongNameToShortName(childfullpath)
print("searchStr= "+jointName +" shortjointName= "+shortjointName)
if(str(shortjointName)==str(jointName)):
HitJointFullPath=childfullpath
print("HitJointFullPath !!!!!!!!= "+shortjointName)
break
print("HitJointFullPath= "+HitJointFullPath)
return HitJointFullPath
def setCharacterObject(GroupName,jointName,characterDefName,RigInt,RigInt2):
#MEL setCharacterObject("root",$characterDefName,0,0);
jointFullName=Group_in_joint(GroupName,jointName)
evalStr='setCharacterObject("'+jointFullName+'","'+characterDefName+'",'+str(RigInt)+','+str(RigInt2)+');'
print("evalStr= "+ evalStr)
mel.eval(evalStr)
def UE4JointSetToHumanIK():
characterDefName,GroupName= makeHumanIkDef_from_selected_groupName()
#print("characterDefName= "+characterDefName)
setCharacterObject(GroupName,"root",characterDefName,0,0);
setCharacterObject(GroupName,"hip",characterDefName,1,0);
setCharacterObject(GroupName,"thigh_l",characterDefName,2,0);
setCharacterObject(GroupName,"calf_l",characterDefName,3,0);
setCharacterObject(GroupName,"foot_l",characterDefName,4,0);
setCharacterObject(GroupName,"thigh_r",characterDefName,5,0);
setCharacterObject(GroupName,"calf_r",characterDefName,6,0);
setCharacterObject(GroupName,"foot_r",characterDefName,7,0);
setCharacterObject(GroupName,"spine_01",characterDefName,8,0);
setCharacterObject(GroupName,"upperarm_l",characterDefName,9,0);
setCharacterObject(GroupName,"lowerarm_l",characterDefName,10,0);
setCharacterObject(GroupName,"hand_l",characterDefName,11,0);
setCharacterObject(GroupName,"upperarm_r",characterDefName,12,0);
setCharacterObject(GroupName,"lowerarm_r",characterDefName,13,0);
setCharacterObject(GroupName,"hand_r",characterDefName,14,0);
setCharacterObject(GroupName,"head",characterDefName,15,0);
setCharacterObject(GroupName,"thumb_02_l",characterDefName,50,0);
setCharacterObject(GroupName,"thumb_03_l",characterDefName,51,0);
setCharacterObject(GroupName,"thumb_04_l",characterDefName,52,0);
setCharacterObject(GroupName,"index_01_l",characterDefName,54,0);
setCharacterObject(GroupName,"index_02_l",characterDefName,55,0);
setCharacterObject(GroupName,"index_03_l",characterDefName,56,0);
setCharacterObject(GroupName,"middle_01_l",characterDefName,58,0);
setCharacterObject(GroupName,"middle_02_l",characterDefName,59,0);
setCharacterObject(GroupName,"middle_03_l",characterDefName,60,0);
setCharacterObject(GroupName,"ring_01_l",characterDefName,62,0);
setCharacterObject(GroupName,"ring_02_l",characterDefName,63,0);
setCharacterObject(GroupName,"ring_03_l",characterDefName,64,0);
setCharacterObject(GroupName,"pinky_01_l",characterDefName,66,0);
setCharacterObject(GroupName,"pinky_02_l",characterDefName,67,0);
setCharacterObject(GroupName,"pinky_03_l",characterDefName,68,0);
setCharacterObject(GroupName,"thumb_02_r",characterDefName,74,0);
setCharacterObject(GroupName,"thumb_03_r",characterDefName,75,0);
setCharacterObject(GroupName,"thumb_04_r",characterDefName,76,0);
setCharacterObject(GroupName,"index_01_r",characterDefName,78,0);
setCharacterObject(GroupName,"index_02_r",characterDefName,79,0);
setCharacterObject(GroupName,"index_03_r",characterDefName,80,0);
setCharacterObject(GroupName,"middle_01_r",characterDefName,82,0);
setCharacterObject(GroupName,"middle_02_r",characterDefName,83,0);
setCharacterObject(GroupName,"middle_03_r",characterDefName,84,0);
setCharacterObject(GroupName,"ring_01_r",characterDefName,86,0);
setCharacterObject(GroupName,"ring_02_r",characterDefName,87,0);
setCharacterObject(GroupName,"ring_03_r",characterDefName,88,0);
setCharacterObject(GroupName,"pinky_01_r",characterDefName,90,0);
setCharacterObject(GroupName,"pinky_02_r",characterDefName,91,0);
setCharacterObject(GroupName,"pinky_03_r",characterDefName,92,0);
UE4JointSetToHumanIK()
MEL(UE4グレイマンジョイントをリファレンスしてる場合) Ver.3
//selected_gloup_nodeName_to_HumanIKCharacterName UE4 joint Refferenced. Ver3
//you shuld Select Root Joint
global proc string makeHumanIkDef_from_selected_groupName()
{
string $selectedArr[] = `ls -sl`;
print($selectedArr);
string $selectedGlp = $selectedArr[0];
$characterName = `hikCreateCharacter($selectedGlp)`;
print("characterName= "+$characterName+"\n");
return $characterName;
};
global proc string Get_RefferenceName_selected_groupName()
{
string $RefferenceName ="";
string $selectedArr[] = `ls -sl`;
print($selectedArr);
string $selectedGlp = $selectedArr[0];
string $buffer[];
$numTokens = `tokenize $selectedGlp ":" $buffer`;
//print("$buffer= "+$buffer+"\n");
$RefferenceName=$buffer[0];
print("$RefferenceName= "+$RefferenceName+"\n");
return $RefferenceName;
};
global proc UE4JointSetToHumanIK()
{
string $selectedArr[] = `ls -sl`;
print($selectedArr);
if($selectedArr[0]==""){
print("You Should Select joint And Mesh Group!!!!!!!");
}else{
$RefferenceName= `Get_RefferenceName_selected_groupName`;
print("$RefferenceName= "+$RefferenceName+"\n");
$characterDefName= `makeHumanIkDef_from_selected_groupName`;
print("characterDefName= "+$characterDefName+"\n");
//setCharacterObject to UnrealEngine4 (UE4)Joint
setCharacterObject($RefferenceName+":root",$characterDefName,0,0);
setCharacterObject($RefferenceName+":pelvis",$characterDefName,1,0);
setCharacterObject($RefferenceName+":thigh_l",$characterDefName,2,0);
setCharacterObject($RefferenceName+":calf_l",$characterDefName,3,0);
setCharacterObject($RefferenceName+":foot_l",$characterDefName,4,0);
setCharacterObject($RefferenceName+":thigh_r",$characterDefName,5,0);
setCharacterObject($RefferenceName+":calf_r",$characterDefName,6,0);
setCharacterObject($RefferenceName+":foot_r",$characterDefName,7,0);
setCharacterObject($RefferenceName+":spine_01 ",$characterDefName,8,0);
setCharacterObject($RefferenceName+":upperarm_l ",$characterDefName,9,0);
setCharacterObject($RefferenceName+":lowerarm_l ",$characterDefName,10,0);
setCharacterObject($RefferenceName+":hand_l ",$characterDefName,11,0);
setCharacterObject($RefferenceName+":upperarm_r ",$characterDefName,12,0);
setCharacterObject($RefferenceName+":lowerarm_r ",$characterDefName,13,0);
setCharacterObject($RefferenceName+":hand_r ",$characterDefName,14,0);
setCharacterObject($RefferenceName+":head ",$characterDefName,15,0);
setCharacterObject($RefferenceName+":thumb_01_l ",$characterDefName,50,0);
setCharacterObject($RefferenceName+":thumb_02_l ",$characterDefName,51,0);
setCharacterObject($RefferenceName+":thumb_03_l ",$characterDefName,52,0);
setCharacterObject($RefferenceName+":index_01_l ",$characterDefName,54,0);
setCharacterObject($RefferenceName+":index_02_l ",$characterDefName,55,0);
setCharacterObject($RefferenceName+":index_03_l ",$characterDefName,56,0);
setCharacterObject($RefferenceName+":middle_01_l ",$characterDefName,58,0);
setCharacterObject($RefferenceName+":middle_02_l ",$characterDefName,59,0);
setCharacterObject($RefferenceName+":middle_03_l ",$characterDefName,60,0);
setCharacterObject($RefferenceName+":ring_01_l ",$characterDefName,62,0);
setCharacterObject($RefferenceName+":ring_02_l ",$characterDefName,63,0);
setCharacterObject($RefferenceName+":ring_03_l ",$characterDefName,64,0);
setCharacterObject($RefferenceName+":pinky_01_l ",$characterDefName,66,0);
setCharacterObject($RefferenceName+":pinky_02_l ",$characterDefName,67,0);
setCharacterObject($RefferenceName+":pinky_03_l ",$characterDefName,68,0);
setCharacterObject($RefferenceName+":thumb_01_r ",$characterDefName,74,0);
setCharacterObject($RefferenceName+":thumb_02_r ",$characterDefName,75,0);
setCharacterObject($RefferenceName+":thumb_03_r ",$characterDefName,76,0);
setCharacterObject($RefferenceName+":index_01_r ",$characterDefName,78,0);
setCharacterObject($RefferenceName+":index_02_r ",$characterDefName,79,0);
setCharacterObject($RefferenceName+":index_03_r ",$characterDefName,80,0);
setCharacterObject($RefferenceName+":middle_01_r ",$characterDefName,82,0);
setCharacterObject($RefferenceName+":middle_02_r ",$characterDefName,83,0);
setCharacterObject($RefferenceName+":middle_03_r ",$characterDefName,84,0);
setCharacterObject($RefferenceName+":ring_01_r ",$characterDefName,86,0);
setCharacterObject($RefferenceName+":ring_02_r ",$characterDefName,87,0);
setCharacterObject($RefferenceName+":ring_03_r ",$characterDefName,88,0);
setCharacterObject($RefferenceName+":pinky_01_r ",$characterDefName,90,0);
setCharacterObject($RefferenceName+":pinky_02_r ",$characterDefName,91,0);
setCharacterObject($RefferenceName+":pinky_03_r ",$characterDefName,92,0);
}
};
UE4JointSetToHumanIK()
MEL(UE4ジョイントがシーンに2つある場合用) hipがないタイプ用
//selected_group_nodeName_to_HumanIKCharacterName
string $selectedArr[] = `ls -sl`;
print($selectedArr);
string $selectedGlp = $selectedArr[0];
global proc string makeHumanIkDef_from_selected_groupName()
{
string $selectedArr[] = `ls -sl`;
print($selectedArr);
string $selectedGlp = $selectedArr[0];
$characterName = `hikCreateCharacter($selectedGlp)`;
print("characterName= "+$characterName+"\n");
return $characterName;
};
global proc UE4_pelvis_JointSetToHumanIK_FullPath(string $selectedGlp)
{
$characterDefName= `makeHumanIkDef_from_selected_groupName`;
print("characterDefName= "+$characterDefName+"\n");
//setCharacterObject to UnrealEngine4 (UE4)Joint
setCharacterObject($selectedGlp+"|SK_Mannequin|root",$characterDefName,0,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis",$characterDefName,1,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|thigh_l",$characterDefName,2,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|thigh_l|calf_l",$characterDefName,3,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|thigh_l|calf_l|foot_l",$characterDefName,4,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|thigh_r",$characterDefName,5,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|thigh_r|calf_r",$characterDefName,6,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|thigh_r|calf_r|foot_r",$characterDefName,7,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01 ",$characterDefName,8,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_l|upperarm_l",$characterDefName,9,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l",$characterDefName,10,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l",$characterDefName,11,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_r|upperarm_r",$characterDefName,12,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r",$characterDefName,13,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r",$characterDefName,14,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|neck_01|head",$characterDefName,15,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|thumb_01_l",$characterDefName,50,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|thumb_01_l|thumb_02_l",$characterDefName,51,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|thumb_01_l|thumb_02_l|thumb_03_l",$characterDefName,52,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|index_01_l",$characterDefName,54,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|index_01_l|index_02_l",$characterDefName,55,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|index_01_l|index_02_l|index_03_l",$characterDefName,56,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|middle_01_l",$characterDefName,58,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|middle_01_l|middle_02_l",$characterDefName,59,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|middle_01_l|middle_02_l|middle_03_l",$characterDefName,60,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|ring_01_l",$characterDefName,62,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|ring_01_l|ring_02_l",$characterDefName,63,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|ring_01_l|ring_02_l|ring_03_l",$characterDefName,64,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|pinky_01_l",$characterDefName,66,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|pinky_01_l|pinky_02_l",$characterDefName,67,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|pinky_01_l|pinky_02_l|pinky_03_l",$characterDefName,68,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|thumb_01_r",$characterDefName,74,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|thumb_01_r|thumb_02_r",$characterDefName,75,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|thumb_01_r|thumb_02_r|thumb_03_r",$characterDefName,76,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|index_01_r",$characterDefName,78,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|index_01_r|index_02_r",$characterDefName,79,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|index_01_r|index_02_r|index_03_r",$characterDefName,80,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|middle_01_r",$characterDefName,82,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|middle_01_r|middle_02_r",$characterDefName,83,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|middle_01_r|middle_02_r|middle_03_r",$characterDefName,84,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|ring_01_r",$characterDefName,86,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|ring_01_r|ring_02_r",$characterDefName,87,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|ring_01_r|ring_02_r|ring_03_r",$characterDefName,88,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|pinky_01_r",$characterDefName,90,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|pinky_01_r|pinky_02_r",$characterDefName,91,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|pelvis|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|pinky_01_r|pinky_02_r|pinky_03_r",$characterDefName,92,0);
}
UE4_pelvis_JointSetToHumanIK_FullPath($selectedGlp)
MEL (UE4ジョイントがシーンに2つある場合用) hipがあるタイプ用
//selected_gloup_nodeName_to_HumanIKCharacterName
string $selectedArr[] = `ls -sl`;
print($selectedArr);
string $selectedGlp = $selectedArr[0];
global proc string makeHumanIkDef_from_selected_groupName()
{
string $selectedArr[] = `ls -sl`;
print($selectedArr);
string $selectedGlp = $selectedArr[0];
$characterName = `hikCreateCharacter($selectedGlp)`;
print("characterName= "+$characterName+"\n");
return $characterName;
};
global proc UE4JointSetToHumanIK_FullPath(string $selectedGlp)
{
$characterDefName= `makeHumanIkDef_from_selected_groupName`;
print("characterDefName= "+$characterDefName+"\n");
//setCharacterObject to UnrealEngine4 (UE4)Joint
setCharacterObject($selectedGlp+"|SK_Mannequin|root",$characterDefName,0,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip",$characterDefName,1,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|pelvis|thigh_l",$characterDefName,2,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|pelvis|thigh_l|calf_l",$characterDefName,3,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|pelvis|thigh_l|calf_l|foot_l",$characterDefName,4,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|pelvis|thigh_r",$characterDefName,5,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|pelvis|thigh_r|calf_r",$characterDefName,6,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|pelvis|thigh_r|calf_r|foot_r",$characterDefName,7,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01 ",$characterDefName,8,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_l|upperarm_l",$characterDefName,9,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l",$characterDefName,10,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l",$characterDefName,11,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_r|upperarm_r",$characterDefName,12,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r",$characterDefName,13,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r",$characterDefName,14,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|neck_01|neckUpper|head",$characterDefName,15,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|thumb_01_l",$characterDefName,50,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|thumb_01_l|thumb_02_l",$characterDefName,51,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|thumb_01_l|thumb_02_l|thumb_03_l",$characterDefName,52,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|index_01_l",$characterDefName,54,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|index_01_l|index_02_l",$characterDefName,55,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|index_01_l|index_02_l|index_03_l",$characterDefName,56,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|middle_01_l",$characterDefName,58,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|middle_01_l|middle_02_l",$characterDefName,59,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|middle_01_l|middle_02_l|middle_03_l",$characterDefName,60,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|ring_01_l",$characterDefName,62,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|ring_01_l|ring_02_l",$characterDefName,63,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|ring_01_l|ring_02_l|ring_03_l",$characterDefName,64,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|pinky_01_l",$characterDefName,66,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|pinky_01_l|pinky_02_l",$characterDefName,67,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_l|upperarm_l|lowerarm_l|hand_l|pinky_01_l|pinky_02_l|pinky_03_l",$characterDefName,68,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|thumb_01_r",$characterDefName,74,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|thumb_01_r|thumb_02_r",$characterDefName,75,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|thumb_01_r|thumb_02_r|thumb_03_r",$characterDefName,76,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|index_01_r",$characterDefName,78,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|index_01_r|index_02_r",$characterDefName,79,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|index_01_r|index_02_r|index_03_r",$characterDefName,80,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|middle_01_r",$characterDefName,82,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|middle_01_r|middle_02_r",$characterDefName,83,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|middle_01_r|middle_02_r|middle_03_r",$characterDefName,84,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|ring_01_r",$characterDefName,86,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|ring_01_r|ring_02_r",$characterDefName,87,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|ring_01_r|ring_02_r|ring_03_r",$characterDefName,88,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|pinky_01_r",$characterDefName,90,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|pinky_01_r|pinky_02_r",$characterDefName,91,0);
setCharacterObject($selectedGlp+"|SK_Mannequin|root|hip|spine_01|spine_02|spine_03|clavicle_r|upperarm_r|lowerarm_r|hand_r|pinky_01_r|pinky_02_r|pinky_03_r",$characterDefName,92,0);
}
UE4JointSetToHumanIK_FullPath($selectedGlp)
MEL (UE4 ジョイントはシーンに1つ用)
//selected_gloup_nodeName_to_HumanIKCharacterName
global proc string makeHumanIkDef_from_selected_groupName()
{
string $selectedArr[] = `ls -sl`;
print($selectedArr);
string $selectedGlp = $selectedArr[0];
$characterName = `hikCreateCharacter($selectedGlp)`;
print("characterName= "+$characterName+"\n");
return $characterName;
};
global proc UE4JointSetToHumanIK()
{
$characterDefName= `makeHumanIkDef_from_selected_groupName`;
print("characterDefName= "+$characterDefName+"\n");
//setCharacterObject to UnrealEngine4 (UE4)Joint
setCharacterObject("root",$characterDefName,0,0);
setCharacterObject("root|hip",$characterDefName,1,0);
setCharacterObject("thigh_l",$characterDefName,2,0);
setCharacterObject("calf_l",$characterDefName,3,0);
setCharacterObject("foot_l",$characterDefName,4,0);
setCharacterObject("thigh_r",$characterDefName,5,0);
setCharacterObject("calf_r",$characterDefName,6,0);
setCharacterObject("foot_r",$characterDefName,7,0);
setCharacterObject("spine_01 ",$characterDefName,8,0);
setCharacterObject("upperarm_l ",$characterDefName,9,0);
setCharacterObject("lowerarm_l ",$characterDefName,10,0);
setCharacterObject("hand_l ",$characterDefName,11,0);
setCharacterObject("upperarm_r ",$characterDefName,12,0);
setCharacterObject("lowerarm_r ",$characterDefName,13,0);
setCharacterObject("hand_r ",$characterDefName,14,0);
setCharacterObject("neck_01|neckUpper|head ",$characterDefName,15,0);
setCharacterObject("thumb_01_l ",$characterDefName,50,0);
setCharacterObject("thumb_02_l ",$characterDefName,51,0);
setCharacterObject("thumb_03_l ",$characterDefName,52,0);
setCharacterObject("index_01_l ",$characterDefName,54,0);
setCharacterObject("index_02_l ",$characterDefName,55,0);
setCharacterObject("index_03_l ",$characterDefName,56,0);
setCharacterObject("middle_01_l ",$characterDefName,58,0);
setCharacterObject("middle_02_l ",$characterDefName,59,0);
setCharacterObject("middle_03_l ",$characterDefName,60,0);
setCharacterObject("ring_01_l ",$characterDefName,62,0);
setCharacterObject("ring_02_l ",$characterDefName,63,0);
setCharacterObject("ring_03_l ",$characterDefName,64,0);
setCharacterObject("pinky_01_l ",$characterDefName,66,0);
setCharacterObject("pinky_02_l ",$characterDefName,67,0);
setCharacterObject("pinky_03_l ",$characterDefName,68,0);
setCharacterObject("thumb_01_r ",$characterDefName,74,0);
setCharacterObject("thumb_02_r ",$characterDefName,75,0);
setCharacterObject("thumb_03_r ",$characterDefName,76,0);
setCharacterObject("index_01_r ",$characterDefName,78,0);
setCharacterObject("index_02_r ",$characterDefName,79,0);
setCharacterObject("index_03_r ",$characterDefName,80,0);
setCharacterObject("middle_01_r ",$characterDefName,82,0);
setCharacterObject("middle_02_r ",$characterDefName,83,0);
setCharacterObject("middle_03_r ",$characterDefName,84,0);
setCharacterObject("ring_01_r ",$characterDefName,86,0);
setCharacterObject("ring_02_r ",$characterDefName,87,0);
setCharacterObject("ring_03_r ",$characterDefName,88,0);
setCharacterObject("pinky_01_r ",$characterDefName,90,0);
setCharacterObject("pinky_02_r ",$characterDefName,91,0);
setCharacterObject("pinky_03_r ",$characterDefName,92,0);
}
UE4JointSetToHumanIK()
Python のsetCharacterObjectはないみたい。mel.evalで呼ぶこともできるかなあ。
ちょっとめんどいのでまた今度。
UE4ジョイントが二つあった場合にうまく動かないのでフルパスに更新予定
//以下調べもの用
HumanIKをコマンドで操作する
https://qiita.com/amanatsu-knit/items/8c66297b012d74f7438a
whatIs hikCreateCharacter;
whatIs setCharacterObject;
C:/Program Files/Autodesk/Maya2016/scripts/others/hikGlobalUtils.mel
[MEL] 戻り値を配列で返す
なぜかずっと出来ないと思っていた、
プロシージャの戻り値を配列で返す方法。
以下サンプル。
proc string[] sample(string $param[])
{
string $return[];
for ($i = 0 ; $i < size($param) ; $i++)
{
$return[$i] = “Re_”+$param[$i];
}
return $return;
}
sample({“aaa”,”bbb”,”ccc”});
// Result: Re_aaa Re_bbb Re_ccc //
//HumanIKのコントローラー番号
for($i = 0; $i < 212; $i++)
{
$HIKname = GetHIKNodeName($i);
print ($i + ” :” + $HIKname + “\n”);
};
0 :Reference
1 :Hips
2 :LeftUpLeg
3 :LeftLeg
4 :LeftFoot
5 :RightUpLeg
6 :RightLeg
7 :RightFoot
8 :Spine
9 :LeftArm
10 :LeftForeArm
11 :LeftHand
12 :RightArm
13 :RightForeArm
14 :RightHand
15 :Head
16 :LeftToeBase
17 :RightToeBase
18 :LeftShoulder
19 :RightShoulder
20 :Neck
21 :LeftFingerBase
22 :RightFingerBase
23 :Spine1
24 :Spine2
25 :Spine3
26 :Spine4
27 :Spine5
28 :Spine6
29 :Spine7
30 :Spine8
31 :Spine9
32 :Neck1
33 :Neck2
34 :Neck3
35 :Neck4
36 :Neck5
37 :Neck6
38 :Neck7
39 :Neck8
40 :Neck9
41 :LeftUpLegRoll
42 :LeftLegRoll
43 :RightUpLegRoll
44 :RightLegRoll
45 :LeftArmRoll
46 :LeftForeArmRoll
47 :RightArmRoll
48 :RightForeArmRoll
49 :HipsTranslation
50 :LeftHandThumb1
51 :LeftHandThumb2
52 :LeftHandThumb3
53 :LeftHandThumb4
54 :LeftHandIndex1
55 :LeftHandIndex2
56 :LeftHandIndex3
57 :LeftHandIndex4
58 :LeftHandMiddle1
59 :LeftHandMiddle2
60 :LeftHandMiddle3
61 :LeftHandMiddle4
62 :LeftHandRing1
63 :LeftHandRing2
64 :LeftHandRing3
65 :LeftHandRing4
66 :LeftHandPinky1
67 :LeftHandPinky2
68 :LeftHandPinky3
69 :LeftHandPinky4
70 :LeftHandExtraFinger1
71 :LeftHandExtraFinger2
72 :LeftHandExtraFinger3
73 :LeftHandExtraFinger4
74 :RightHandThumb1
75 :RightHandThumb2
76 :RightHandThumb3
77 :RightHandThumb4
78 :RightHandIndex1
79 :RightHandIndex2
80 :RightHandIndex3
81 :RightHandIndex4
82 :RightHandMiddle1
83 :RightHandMiddle2
84 :RightHandMiddle3
85 :RightHandMiddle4
86 :RightHandRing1
87 :RightHandRing2
88 :RightHandRing3
89 :RightHandRing4
90 :RightHandPinky1
91 :RightHandPinky2
92 :RightHandPinky3
93 :RightHandPinky4
94 :RightHandExtraFinger1
95 :RightHandExtraFinger2
96 :RightHandExtraFinger3
97 :RightHandExtraFinger4
98 :LeftFootThumb1
99 :LeftFootThumb2
100 :LeftFootThumb3
101 :LeftFootThumb4
102 :LeftFootIndex1
103 :LeftFootIndex2
104 :LeftFootIndex3
105 :LeftFootIndex4
106 :LeftFootMiddle1
107 :LeftFootMiddle2
108 :LeftFootMiddle3
109 :LeftFootMiddle4
110 :LeftFootRing1
111 :LeftFootRing2
112 :LeftFootRing3
113 :LeftFootRing4
114 :LeftFootPinky1
115 :LeftFootPinky2
116 :LeftFootPinky3
117 :LeftFootPinky4
118 :LeftFootExtraFinger1
119 :LeftFootExtraFinger2
120 :LeftFootExtraFinger3
121 :LeftFootExtraFinger4
122 :RightFootThumb1
123 :RightFootThumb2
124 :RightFootThumb3
125 :RightFootThumb4
126 :RightFootIndex1
127 :RightFootIndex2
128 :RightFootIndex3
129 :RightFootIndex4
130 :RightFootMiddle1
131 :RightFootMiddle2
132 :RightFootMiddle3
133 :RightFootMiddle4
134 :RightFootRing1
135 :RightFootRing2
136 :RightFootRing3
137 :RightFootRing4
138 :RightFootPinky1
139 :RightFootPinky2
140 :RightFootPinky3
141 :RightFootPinky4
142 :RightFootExtraFinger1
143 :RightFootExtraFinger2
144 :RightFootExtraFinger3
145 :RightFootExtraFinger4
146 :LeftInHandThumb
147 :LeftInHandIndex
148 :LeftInHandMiddle
149 :LeftInHandRing
150 :LeftInHandPinky
151 :LeftInHandExtraFinger
152 :RightInHandThumb
153 :RightInHandIndex
154 :RightInHandMiddle
155 :RightInHandRing
156 :RightInHandPinky
157 :RightInHandExtraFinger
158 :LeftInFootThumb
159 :LeftInFootIndex
160 :LeftInFootMiddle
161 :LeftInFootRing
162 :LeftInFootPinky
163 :LeftInFootExtraFinger
164 :RightInFootThumb
165 :RightInFootIndex
166 :RightInFootMiddle
167 :RightInFootRing
168 :RightInFootPinky
169 :RightInFootExtraFinger
170 :LeftShoulderExtra
171 :RightShoulderExtra
172 :
173 :
174 :
175 :
176 :
UE4でBluePrintでテキストファイルを読み込む方法(UE4.26)
以下のサイトを参考にさせていただきました。
https://horizonglow2.blogspot.com/2019/02/ue4.html
新規C++クラスを作成します。
作成するのは、成果物がBPで扱えるBlueprint Function Libraryになります。
フォルダやクラス名を適当に決めたら、VisualStudioが開きます。
まず.hファイルに定義を書きます。
ここではTextFileToStringというクラスを作成することにします。
書いたコードはこんな感じ。
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "TextFileToString.generated.h"
/**
*
*/
UCLASS()
class AMBITIONEARLYHOURSKY_API UTextFileToString : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
UFUNCTION(BlueprintCallable, Category = "MyBPLibrary")
static void TextFileLoadToString(FString Filename, FString& FileData, bool& Success);
};
CPPはこう
// Fill out your copyright notice in the Description page of Project Settings.
#include "TextFileToString.h"
// ScriptLoader.cpp
//#include "FileHelpers.h"
#include "Engine.h"
// ScriptLoader.cpp
void UTextFileToString::TextFileLoadToString(FString Filename, FString& FileData, bool& Success)
{
if (GEngine)
{
FString FilePath = Filename;
if (!FPlatformFileManager::Get().GetPlatformFile().FileExists(*FilePath))
{
Success = false;
return;
}
const int64 FileSize = FPlatformFileManager::Get().GetPlatformFile().FileSize(*FilePath);
FFileHelper::LoadFileToString(FileData, *FilePath);
Success = true;
}
Success = false;
}
こんなノードの使い方します。