Clip

Object Hierarchy | 関連する C++クラス:Clip

継承

SIObject

ProjectItem

Clip

導入

v1.5

詳細

クリップはアニメーションとシェイプアクション(ActionSource)、オーディオ、イメージソース(Source)、コンパウンドクリップ(ClipContainer)のインスタンスです。siClipType列挙に含まれる値の 1 つを戻すSIObject.Typeプロパティを使用してクリップタイプ(オーディオクリップなど)を表示してチェックします。

また、このオブジェクトを使用すると、タイミング(TimeControl)、その他のクリップへのリンク(ClipEffect)、および適用するエフェクト(ClipRelation)などのクリップ機能にアクセスすることができます。さらに、このクリップがインスタンス化される(Clip.Sourceを介したSourceオブジェクト)、またはソースのエレメントとなる(Clip.MappedItemsを介したMappedItemオブジェクト、またはActionSource.SourceItemsを介したAnimationSourceItemオブジェクトのいずれかを使用して)基本ソースを取得します。

重要:クリップオブジェクトがコンパウンド、オーディオ、およびイメージクリップの場合、すべてのクリップメソッドとプロパティでは 3 つのタイプが使用できません。たとえば、Clip.MappedItemsプロパティではエラーが発生し、3 つのクリップタイプ(E_NOTIMPL を戻すクリップなど)が実装されなかったことを告げるレポートが作成されます。

ヒント:ソースからクリップが作成するオブジェクトモデルに関数はありませんが、AddClipコマンドを使用できます。これにより、このオブジェクトが戻されます。既存のクリップオブジェクトにアクセスするには、ClipContainer.Clipsプロパティを使用してMixer上のClipCollectionを取得します。

メソッド

AddCustomOp AddICEAttribute AddProperty AddProperty2
AddScriptedOp AddScriptedOpFromFile AnimatedParameters2 BelongsToオペレータ
EvaluateAt GetICEAttributeFromName IsA IsAnimated2
IsClassOfオペレータ IsEqualToオペレータ IsKindOf IsLockedオペレータ
IsSelectedオペレータ LockOwners RemoveICEAttribute SetAsSelectedオペレータ
SetCapabilityFlagオペレータ SetLock TaggedParameters UnSetLock

プロパティ

Application BranchFlagオペレータ Capabilitiesオペレータ Categories
Effect EvaluationID Familiesオペレータ FullNameオペレータ
Help HierarchicalEvaluationID ICEAttributes LockLevelオペレータ
LockMastersオペレータ LockTypeオペレータ MappedItems Model
Nameオペレータ NestedObjects ObjectID Origin
OriginPath Owners PPGLayoutオペレータ Parametersオペレータ
Parent Parent3DObject Properties Relations
Selectedオペレータ Source TimeControl Typeオペレータ

1. Python の例

#

# This example demonstrates how to create a Clip containing the static

# values of the local position of an object.

#

oRoot = Application.ActiveSceneRoot

oCube = oRoot.AddGeometry( "Cube", "MeshSurface" )

# Creating the first animation source

sParams = "cube.kine.local.posx,cube.kine.local.posy,cube.kine.local.posz"

oSource = Application.StoreAction( oRoot, sParams, 1, "StoredStaticPose", 1, 1, 5, 0, 0) 

# Creating the first clip

oClip = Application.AddClip( oRoot, oSource )	

Application.LogMessage( "First created clip " + oClip.FullName )

# Creating the second animation source

oCube.Parameters("posx").Value = 3.0

oSource2 = Application.StoreAction( oRoot, sParams, 1, "StoredStaticPose", 1, 7, 9, 0, 0 )

# Creating the second clip

oClip2 = Application.AddClip(oRoot, oSource2)

Application.LogMessage("Second created clip " + oClip2.FullName)

# Expected results:

#INFO : First created clip Mixer.Mixer_Anim_Track.StoredStaticPose_Clip

#INFO : Second created clip Mixer.Mixer_Anim_Track1.StoredStaticPose1_Clip

2. JScript の例

/*

This example demonstrates working with action and audio sources and clips

*/

NewScene( null, false );

// Do it on a nested model

var mdl = ActiveSceneRoot.AddModel();

mdl.Name = "TestModel";

// ----------------------

// Create an fcurve source and instantiate a clip in the mixer

var obj = mdl.AddNull();

// Set FCurves on the null's scaling

var keys = new Array( 5, 1.2,  20, 1.7,  45, 2.0,  90, 2.5 );	// X

obj.sclx.AddFCurve2( keys );

var keyfactor = Math.random() * 10;					// Y

var posfactor = Math.random();

for ( var i=0; i<keys.length; i=i+2 ) {

	keys[i] = keys[i] + keyfactor;

	keys[i+1] = keys[i+1] * posfactor;

}

obj.scly.AddFCurve2( keys );

var keyfactor = Math.random() * 10;					// Z

var posfactor = Math.random();

for ( var i=0; i<keys.length; i=i+2 ) {

	keys[i] = keys[i] - keyfactor;

	keys[i+1] = keys[i+1] * posfactor;

}

obj.sclz.AddFCurve2( keys );

// Get list of parameters to mark

var params = obj.sclx.FullName + ",";

params += obj.scly.FullName + ",";

params += obj.sclz.FullName;

// Make the FCurves into an Action

var src = StoreAction( mdl, params, 2, "StoredAnimFCrvAction" );

AddClip( mdl, src );

// ----------------------

// Add an audio clip to the mixer

var mix;

if ( mdl.HasMixer() ) {

	mix = mdl.Mixer; 

} else {

	mix = mdl.AddMixer();

}

var aud_track = AddTrack( mdl, mix, 2 );

var aud_src_path = XSIUtils.BuildPath( Application.InstallationPath( siFactoryPath ), "Data", "XSI_SAMPLES", "Audio", "Torefaction.wav" );

var aud_src = ImportAudio( mdl, aud_src_path );

AddAudioClip( mdl, aud_src );

// ----------------------

// Find the clips under the mixer

var cliplist = mdl.Mixer.Clips;

for ( var c=0; c<cliplist.Count; c++ ) {

	var clip = cliplist(c);

	LogMessage( "----------------------" );

	LogMessage( "Found a clip of type " + clip.Type + " under " + mdl.Mixer );

	// Get the underlying source items associated with this clip, but make sure

	// we skip the audio files

	if ( clip.Type == siClipAnimationType ) {

		LogMessage( "Found " + clip.MappedItems.Count + " mapped items on " + clip );

		for ( var m=0; m<clip.MappedItems.Count; m++ ) {

			var itm = clip.MappedItems(m);

			LogMessage( "Found this mapped item: " + itm.Source2 + " (a " + ClassName(itm.Source2) + ")" );

		}

	}

}

// Expected results:

//INFO : ----------------------

//INFO : Found a clip of type mixeranimclip under TestModel.Mixer

//INFO : Found 3 mapped items on TestModel.Mixer.Mixer_Anim_Track.StoredAnimFCrvAction_Clip

//INFO : Found this mapped item: FCurve (a FCurve)

//INFO : Found this mapped item: FCurve (a FCurve)

//INFO : Found this mapped item: FCurve (a FCurve)

//INFO : ----------------------

//INFO : Found a clip of type mixeraudioclip under TestModel.Mixer

関連項目

AddClip ClipContainer.Clips Track.Clips CopyClipToTrack AddAudioClip ImportAudioAndAddClip ApplyShapeKey SaveShapeKey