本文整理汇总了C++中FVector::Set方法的典型用法代码示例。如果您正苦于以下问题:C++ FVector::Set方法的具体用法?C++ FVector::Set怎么用?C++ FVector::Set使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FVector
的用法示例。
在下文中一共展示了FVector::Set方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: getNormal
FORCEINLINE void TVoxelData::getNormal(int x, int y, int z, FVector& normal) const {
if (normal_data.size() == 0) {
normal.Set(0, 0, 0);
}
if (x < voxel_num && y < voxel_num && z < voxel_num) {
const int index = x * voxel_num * voxel_num + y * voxel_num + z;
FVector tmp = normal_data[index];
normal.Set(tmp.X, tmp.Y, tmp.Z);
}
else {
normal.Set(0, 0, 0);
}
}
示例2: GetDefaultValue
void UAnimGraphNode_SkeletalControlBase::GetDefaultValue(const FString& UpdateDefaultValueName, FVector& OutVec)
{
for (UEdGraphPin* Pin : Pins)
{
if (Pin->PinName == UpdateDefaultValueName)
{
if (GetSchema()->IsCurrentPinDefaultValid(Pin).IsEmpty())
{
FString DefaultString = Pin->GetDefaultAsString();
TArray<FString> ResultString;
//Parse string to split its contents separated by ','
DefaultString.Trim();
DefaultString.TrimTrailing();
DefaultString.ParseIntoArray(&ResultString, TEXT(","), true);
check(ResultString.Num() == 3);
OutVec.Set(
FCString::Atof(*ResultString[0]),
FCString::Atof(*ResultString[1]),
FCString::Atof(*ResultString[2])
);
return;
}
}
}
OutVec = FVector::ZeroVector;
}
示例3: Measurement
void UAURSmoothingFilterKalman::Measurement(FTransform const & MeasuredTransform)
{
try
{
FVector translation = MeasuredTransform.GetTranslation();
FString msg = "In: " + translation.ToString();
//FQuat rotation = MeasuredTransform.GetRotation();
TransformAsMat.at<float>(0) = translation.X;
TransformAsMat.at<float>(1) = translation.Y;
TransformAsMat.at<float>(2) = translation.Z;
//TransformAsMat.at<float>(3) = rotation.X * rotation.W;
//TransformAsMat.at<float>(4) = rotation.Y * rotation.W;
//TransformAsMat.at<float>(5) = rotation.Z * rotation.W;
cv::Mat FilterResult = Filter.predict();
Filter.correct(TransformAsMat);
translation.Set(FilterResult.at<float>(0), FilterResult.at<float>(1), FilterResult.at<float>(2));
msg += "\nOut: " + translation.ToString();
UE_LOG(LogAUR, Log, TEXT("%s"), *msg);
//FVector rot_axis(FilterResult.at<float>(3), FilterResult.at<float>(4), FilterResult.at<float>(5));
//float rot_magnitude = rot_axis.Size();
//rot_axis.Normalize();
//rotation.X = rot_axis.X;
//rotation.Y = rot_axis.Y;
//rotation.Z = rot_axis.Z;
//rotation.W = rot_magnitude;
CurrentTransform.SetComponents(MeasuredTransform.GetRotation(), translation, FVector(1, 1, 1));
}
catch (cv::Exception& e)
{
FString exception_msg(e.what());
UE_LOG(LogAUR, Error, TEXT("Kalman: %s"), *exception_msg)
CurrentTransform = MeasuredTransform;
}
}
示例4: CreateTriggerBox
/*
* Creates a Box above this Vessel that listens for Available Vessels that enter its perimeter
* Generates an event which will subsequently inform the Available Vessel that is overlapping this
*/
void AVessel::CreateTriggerBox()
{
if (TriggerBox == NULL)
{
TriggerBox = NewObject<UBoxComponent>(this, TEXT("TriggerBox"));
TriggerBox->OnComponentBeginOverlap.AddDynamic(this, &AVessel::OnBeginOverlap);
TriggerBox->OnComponentEndOverlap.AddDynamic(this, &AVessel::OnEndOverlap);
TriggerBox->RegisterComponent();
TriggerBox->AttachTo(RootComponent);
}
// Adjust the size of the Trigger Box
FVector BoundingBox = ThreeDeeModel->Bounds.BoxExtent; // copy
BoundingBox *= BoundingBoxBufferScale;
float larger = FMath::Max(BoundingBox.X, BoundingBox.Y); // Make it a cube
const float MAX_PLACEMENT_CAMERA_HEIGHT = 2000.f; // TODO: Place this somewhere more appropriate
BoundingBox.Set(larger, larger, MAX_PLACEMENT_CAMERA_HEIGHT);
TriggerBox->SetRelativeLocation(FVector(0, 0, 0));
TriggerBox->SetBoxExtent(BoundingBox);
}
示例5: ConvertAnims
void USkeleton::ConvertAnims(UAnimSequence4* Seq)
{
guard(USkeleton::ConvertAnims);
CAnimSet* AnimSet = ConvertedAnim;
if (!AnimSet)
{
AnimSet = new CAnimSet(this);
ConvertedAnim = AnimSet;
// Copy bone names
AnimSet->TrackBoneNames.Empty(ReferenceSkeleton.RefBoneInfo.Num());
for (int i = 0; i < ReferenceSkeleton.RefBoneInfo.Num(); i++)
{
AnimSet->TrackBoneNames.Add(ReferenceSkeleton.RefBoneInfo[i].Name);
}
//TODO: verify if UE4 has AnimRotationOnly stuff
AnimSet->AnimRotationOnly = false;
}
if (!Seq) return; // allow calling ConvertAnims(NULL) to create empty AnimSet
// DBG("----------- Skeleton %s: %d seq, %d bones -----------\n", Name, Anims.Num(), ReferenceSkeleton.RefBoneInfo.Num());
int NumTracks = Seq->GetNumTracks();
#if DEBUG_DECOMPRESS
appPrintf("Sequence %s: %d bones, %d offsets (%g per bone), %d frames, %d compressed data\n"
" trans %s, rot %s, scale %s, key %s\n",
Seq->Name, NumTracks, Seq->CompressedTrackOffsets.Num(), Seq->CompressedTrackOffsets.Num() / (float)NumTracks,
Seq->NumFrames, Seq->CompressedByteStream.Num(),
EnumToName(Seq->TranslationCompressionFormat),
EnumToName(Seq->RotationCompressionFormat),
EnumToName(Seq->ScaleCompressionFormat),
EnumToName(Seq->KeyEncodingFormat)
);
for (int i2 = 0; i2 < Seq->CompressedTrackOffsets.Num(); /*empty*/)
{
if (Seq->KeyEncodingFormat != AKF_PerTrackCompression)
{
FName BoneName = ReferenceSkeleton.RefBoneInfo[Seq->GetTrackBoneIndex(i2/4)].Name;
int TransOffset = Seq->CompressedTrackOffsets[i2 ];
int TransKeys = Seq->CompressedTrackOffsets[i2+1];
int RotOffset = Seq->CompressedTrackOffsets[i2+2];
int RotKeys = Seq->CompressedTrackOffsets[i2+3];
appPrintf(" [%d] = trans %d[%d] rot %d[%d] - %s\n", i2/4, TransOffset, TransKeys, RotOffset, RotKeys, *BoneName);
i2 += 4;
}
else
{
FName BoneName = ReferenceSkeleton.RefBoneInfo[Seq->GetTrackBoneIndex(i2/2)].Name;
int TransOffset = Seq->CompressedTrackOffsets[i2 ];
int RotOffset = Seq->CompressedTrackOffsets[i2+1];
appPrintf(" [%d] = trans %d rot %d - %s\n", i2/2, TransOffset, RotOffset, *BoneName);
i2 += 2;
}
}
#endif // DEBUG_DECOMPRESS
// some checks
int offsetsPerBone = 4;
if (Seq->KeyEncodingFormat == AKF_PerTrackCompression)
offsetsPerBone = 2;
if (Seq->CompressedTrackOffsets.Num() != NumTracks * offsetsPerBone && !Seq->RawAnimationData.Num())
{
appNotify("AnimSequence %s has wrong CompressedTrackOffsets size (has %d, expected %d), removing track",
Seq->Name, Seq->CompressedTrackOffsets.Num(), NumTracks * offsetsPerBone);
return;
}
// create CAnimSequence
CAnimSequence *Dst = new CAnimSequence;
AnimSet->Sequences.Add(Dst);
Dst->Name = Seq->Name;
Dst->NumFrames = Seq->NumFrames;
Dst->Rate = Seq->NumFrames / Seq->SequenceLength * Seq->RateScale;
// bone tracks ...
Dst->Tracks.Empty(NumTracks);
FMemReader Reader(Seq->CompressedByteStream.GetData(), Seq->CompressedByteStream.Num());
Reader.SetupFrom(*Package);
bool HasTimeTracks = (Seq->KeyEncodingFormat == AKF_VariableKeyLerp);
for (int BoneIndex = 0; BoneIndex < ReferenceSkeleton.RefBoneInfo.Num(); BoneIndex++)
{
CAnimTrack *A = new (Dst->Tracks) CAnimTrack;
int TrackIndex = Seq->FindTrackForBoneIndex(BoneIndex);
if (TrackIndex < 0)
{
// this track has no animation, use static pose from ReferenceSkeleton
const FTransform& RefPose = ReferenceSkeleton.RefBonePose[BoneIndex];
A->KeyPos.Add(CVT(RefPose.Translation));
A->KeyQuat.Add(CVT(RefPose.Rotation));
//!! RefPose.Scale3D
//.........这里部分代码省略.........