国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁(yè) > news >正文

網(wǎng)站空間商推薦百度怎樣發(fā)布信息

網(wǎng)站空間商推薦,百度怎樣發(fā)布信息,鹽城網(wǎng)站建設(shè)培訓(xùn)學(xué)校,企業(yè)網(wǎng)站制作教程視頻UE4/UE5 基于2D屏幕坐標(biāo)獲取場(chǎng)景3D坐標(biāo) 一、射線檢測(cè)1)定義1)射線與3D場(chǎng)景中的物體交互的流程2)射線檢測(cè)藍(lán)圖函數(shù)3)藍(lán)圖實(shí)現(xiàn)根據(jù)鼠標(biāo)點(diǎn)擊位置獲取場(chǎng)景中的坐標(biāo)值4)根據(jù)相機(jī)中心點(diǎn)獲取場(chǎng)景中的坐標(biāo)值5)射線檢…

UE4/UE5 基于2D屏幕坐標(biāo)獲取場(chǎng)景3D坐標(biāo)

  • 一、射線檢測(cè)
    • 1)定義
    • 1)射線與3D場(chǎng)景中的物體交互的流程
    • 2)射線檢測(cè)藍(lán)圖函數(shù)
    • 3)藍(lán)圖實(shí)現(xiàn)根據(jù)鼠標(biāo)點(diǎn)擊位置獲取場(chǎng)景中的坐標(biāo)值
    • 4)根據(jù)相機(jī)中心點(diǎn)獲取場(chǎng)景中的坐標(biāo)值
    • 5)射線檢測(cè)相關(guān)C++函數(shù)
    • 6)C++實(shí)現(xiàn)手動(dòng)創(chuàng)建射線檢測(cè)
    • 7)C++實(shí)現(xiàn)點(diǎn)擊獲取場(chǎng)景中的坐標(biāo)值
  • 二、非射線檢測(cè)的情況
    • 1)根據(jù)相機(jī)當(dāng)前位置獲取中心點(diǎn)的世界坐標(biāo)


一、射線檢測(cè)

1)定義

射線檢測(cè)(Ray Casting) 是一種計(jì)算機(jī)圖形和計(jì)算機(jī)圖形學(xué)中的基本技術(shù),用于檢測(cè)光線或射線是否與三維場(chǎng)景中的物體相交,以確定相交點(diǎn)的位置和其他相關(guān)信息。射線檢測(cè)通常用于實(shí)現(xiàn)各種交互功能、渲染效果和物理模擬,包括但不限于鼠標(biāo)拾取、光線追蹤、碰撞檢測(cè)和物體拾取等。

1)射線與3D場(chǎng)景中的物體交互的流程

步驟描述
1定義射線:
定義射線的起點(diǎn)和方向向量。
2檢測(cè)相交:
沿著射線的方向,從起點(diǎn)開(kāi)始沿射線前進(jìn),檢測(cè)射線是否與場(chǎng)景中的任何物體相交。
通常,這涉及到進(jìn)行碰撞檢測(cè),以確定是否有物體與射線相交。
3確定交點(diǎn):
如果射線與物體相交,計(jì)算交點(diǎn)的位置。
交點(diǎn)通常以3D坐標(biāo)的形式給出,表示射線與物體相交的點(diǎn)。
4處理交互:
根據(jù)應(yīng)用的需求,您可以在交互點(diǎn)上執(zhí)行特定的操作,如選擇物體、執(zhí)行動(dòng)作或渲染效果。
5遍歷所有可能的相交點(diǎn):
射線檢測(cè)通??梢苑祷囟鄠€(gè)相交點(diǎn),因此可以考慮遍歷所有可能的交點(diǎn)以處理多重相交。

2)射線檢測(cè)藍(lán)圖函數(shù)

藍(lán)圖函數(shù)描述
LineTraceByChannel執(zhí)行一條射線檢測(cè),檢測(cè)與指定碰撞通道相交的物體。返回一個(gè) Hit Result 結(jié)構(gòu)。
SphereTraceByChannel以球體的形狀執(zhí)行射線檢測(cè),檢測(cè)球體與物體的碰撞。返回一個(gè) Hit Result 結(jié)構(gòu)。
LineTraceMultiByChannel執(zhí)行射線檢測(cè),檢測(cè)與指定碰撞通道相交的所有物體。返回一個(gè) Hit Results 數(shù)組。
SphereTraceMultiByChannel以球體的形狀執(zhí)行射線檢測(cè),檢測(cè)球體與多個(gè)物體的碰撞。返回一個(gè) Hit Results 數(shù)組。
BoxTraceByChannel執(zhí)行射線檢測(cè),檢測(cè)與指定碰撞通道相交的物體,使用盒子形狀。返回一個(gè) Hit Result 結(jié)構(gòu)。
MultiSphereTraceByChannel執(zhí)行多個(gè)球體形狀的射線檢測(cè),檢測(cè)多個(gè)球體與物體的碰撞。返回一個(gè) Hit Results 數(shù)組。
LineTraceForObjects執(zhí)行射線檢測(cè),檢測(cè)與指定物體類型相交的物體。返回一個(gè) Hit Result 結(jié)構(gòu)。
SphereTraceForObjects以球體的形狀執(zhí)行射線檢測(cè),檢測(cè)與指定物體類型相交的物體。返回一個(gè) Hit Result 結(jié)構(gòu)。
BoxTraceForObjects執(zhí)行射線檢測(cè),檢測(cè)與指定物體類型相交的物體,使用盒子形狀。返回一個(gè) Hit Result 結(jié)構(gòu)。
MultiSphereTraceForObjects執(zhí)行多個(gè)球體形狀的射線檢測(cè),檢測(cè)與指定物體類型相交的物體。返回一個(gè) Hit Results 數(shù)組。
CapsuleTraceByChannel以膠囊體的形狀執(zhí)行射線檢測(cè),檢測(cè)膠囊體與物體的碰撞。返回一個(gè) Hit Result 結(jié)構(gòu)。
CapsuleTraceForObjects以膠囊體的形狀執(zhí)行射線檢測(cè),檢測(cè)與指定物體類型相交的物體。返回一個(gè) Hit Result 結(jié)構(gòu)。

3)藍(lán)圖實(shí)現(xiàn)根據(jù)鼠標(biāo)點(diǎn)擊位置獲取場(chǎng)景中的坐標(biāo)值

撒大聲地

4)根據(jù)相機(jī)中心點(diǎn)獲取場(chǎng)景中的坐標(biāo)值

需要獲取到pawn里的相機(jī)。
在這里插入圖片描述

5)射線檢測(cè)相關(guān)C++函數(shù)

(僅列舉linetrace系列其他大同小異)

  1. LineTraceSingleByChannel
    • 用于檢測(cè)一條射線與第一個(gè)相交物體的碰撞。
    • 返回一個(gè)FHitResult結(jié)構(gòu),其中包含有關(guān)碰撞的信息,如碰撞點(diǎn)、碰撞法線和碰撞物體的引用。
bool UWorld::LineTraceSingleByChannel(FHitResult& OutHit, const FVector Start, const FVector End, ECollisionChannel TraceChannel, const FCollisionQueryParams& Params)
  1. LineTraceMultiByChannel
    • 用于檢測(cè)一條射線與多個(gè)相交物體的碰撞。
    • 返回一個(gè)TArray<FHitResult>,其中包含所有相交物體的碰撞信息。
int32 UWorld::LineTraceMultiByChannel(TArray<FHitResult>& OutHits, const FVector Start, const FVector End, ECollisionChannel TraceChannel, const FCollisionQueryParams& Params)
  1. LineTraceSingleByObjectType
    • 類似于LineTraceSingleByChannel,但是使用物體類型(EObjectTypeQuery)而不是碰撞通道進(jìn)行檢測(cè)。
bool UWorld::LineTraceSingleByObjectType(FHitResult& OutHit, const FVector Start, const FVector End, FObjectQueryParams ObjectQueryParams, const FCollisionQueryParams& Params)
  1. LineTraceMultiByObjectType
    • 類似于LineTraceMultiByChannel,但是使用物體類型(EObjectTypeQuery)而不是碰撞通道進(jìn)行檢測(cè)。
int32 UWorld::LineTraceMultiByObjectType(TArray<FHitResult>& OutHits, const FVector Start, const FVector End, FObjectQueryParams ObjectQueryParams, const FCollisionQueryParams& Params)

6)C++實(shí)現(xiàn)手動(dòng)創(chuàng)建射線檢測(cè)

FVector StartLocation;  // 射線的起點(diǎn)坐標(biāo)
FVector ForwardVector;  // 射線的方向向量
FHitResult HitResult;  // 用于存儲(chǔ)碰撞信息的變量// 設(shè)置射線的起點(diǎn)坐標(biāo)
StartLocation = PlayerCameraComponent->GetComponentLocation();  // PlayerCameraComponent是攝像機(jī)組件// 設(shè)置射線的方向向量
ForwardVector = PlayerCameraComponent->GetForwardVector();  // 獲取攝像機(jī)的前向向量// 建立射線
FVector EndLocation = ((ForwardVector * RayLength) + StartLocation);  // 計(jì)算射線的終點(diǎn)坐標(biāo)// 進(jìn)行射線檢測(cè)
if (GetWorld()->LineTraceSingleByChannel(HitResult, StartLocation, EndLocation, ECC_Visibility))
{// 射線與物體相交,可以在HitResult中獲取碰撞信息AActor* HitActor = HitResult.GetActor();FVector ImpactPoint = HitResult.ImpactPoint;// 進(jìn)一步處理交互邏輯
}

PlayerCameraComponent:攝像機(jī)組件
LineTraceSingleByChannel:射線檢測(cè)函數(shù)
HitResult:碰撞的物體和碰撞點(diǎn)
RayLength:射線的長(zhǎng)度;
ECC_Visibility:射線檢測(cè)所使用的碰撞通道

7)C++實(shí)現(xiàn)點(diǎn)擊獲取場(chǎng)景中的坐標(biāo)值


void AYourPlayerController::GetSceneLocationFromMouse()
{// 獲取玩家控制器APlayerController* PlayerController = this;if (PlayerController){// 獲取鼠標(biāo)點(diǎn)擊位置FVector MouseLocation, MouseDirection;PlayerController->DeprojectMousePositionToWorld(MouseLocation, MouseDirection);// 創(chuàng)建射線,用于射線檢測(cè)FHitResult HitResult;FCollisionQueryParams CollisionParams;// 執(zhí)行射線檢測(cè)if (GetWorld()->LineTraceSingleByChannel(HitResult, MouseLocation, MouseLocation + MouseDirection * YourRayLength, ECC_Visibility, CollisionParams)){// 獲取射線與場(chǎng)景相交的位置FVector SceneLocation = HitResult.Location;// 打印結(jié)果UE_LOG(LogTemp, Warning, TEXT("Scene Location: %s"), *SceneLocation.ToString());}}
}

二、非射線檢測(cè)的情況

1)根據(jù)相機(jī)當(dāng)前位置獲取中心點(diǎn)的世界坐標(biāo)


void AYourPlayerController::GetCameraCenterLocation()
{// 獲取玩家控制器的視圖控制器APlayerController* PlayerController = this;if (PlayerController){// 獲取相機(jī)組件UCameraComponent* CameraComponent = PlayerController->PlayerCameraManager->GetCameraComponent();if (CameraComponent){// 獲取相機(jī)位置FVector CameraLocation = CameraComponent->GetComponentLocation();// 獲取相機(jī)旋轉(zhuǎn)FRotator CameraRotation = CameraComponent->GetComponentRotation();// 計(jì)算相機(jī)中心點(diǎn)的位置(通常位于相機(jī)位置的前方,視角方向)FVector CameraForwardVector = CameraRotation.Vector();FVector CameraCenterLocation = CameraLocation + CameraForwardVector * YourDistance;  // 替換 YourDistance 為相機(jī)中心點(diǎn)到相機(jī)位置的距離// 將相機(jī)中心點(diǎn)的位置轉(zhuǎn)換為場(chǎng)景中的坐標(biāo)FVector WorldLocation = CameraCenterLocation;// 打印結(jié)果UE_LOG(LogTemp, Warning, TEXT("Camera Center Location: %s"), *WorldLocation.ToString());}}
}
http://m.aloenet.com.cn/news/28721.html

相關(guān)文章:

  • 最版網(wǎng)站建設(shè)案例百度引流推廣怎么收費(fèi)
  • wordpress騰訊地圖插件北京優(yōu)化網(wǎng)站建設(shè)
  • 網(wǎng)站建設(shè)的快樂(lè)技能培訓(xùn)班
  • 武漢seo網(wǎng)站優(yōu)化排名中國(guó)輿情觀察網(wǎng)
  • 建設(shè)網(wǎng)站找哪個(gè)公司怎么開(kāi)通網(wǎng)站
  • 訪問(wèn)外國(guó)網(wǎng)站速度慢app引流推廣軟件
  • 大數(shù)據(jù)網(wǎng)站開(kāi)發(fā)網(wǎng)站建設(shè)制作教程
  • 做網(wǎng)站 賺錢嗎推廣費(fèi)用一般多少
  • 怎樣創(chuàng)作網(wǎng)站電腦培訓(xùn)班價(jià)目表
  • 做婚禮策劃的網(wǎng)站英文網(wǎng)站seo發(fā)展前景
  • 網(wǎng)站建設(shè)相關(guān)基礎(chǔ)實(shí)驗(yàn)總結(jié)注冊(cè)網(wǎng)站免費(fèi)注冊(cè)
  • example郵箱注冊(cè)網(wǎng)站最近剛發(fā)生的新聞
  • 網(wǎng)站專題設(shè)計(jì)軟件谷歌優(yōu)化工具
  • 百度商橋怎樣綁定網(wǎng)站百度搜索推廣操作簡(jiǎn)要流程
  • 網(wǎng)站水印怎么做的企點(diǎn)
  • 用vue做網(wǎng)站谷歌推廣費(fèi)用多少
  • 兩學(xué)一做網(wǎng)站無(wú)法做題鞏義網(wǎng)站優(yōu)化公司
  • 西安網(wǎng)站建設(shè)制作價(jià)格低免費(fèi)友鏈平臺(tái)
  • 玉兒做春夢(mèng)網(wǎng)站網(wǎng)站優(yōu)化建議
  • 百度云 wordpress 教程視頻優(yōu)化網(wǎng)站推廣教程整站
  • 花錢想貸款結(jié)果成了做網(wǎng)站網(wǎng)站制作大概多少錢
  • 現(xiàn)在一般做B2B類網(wǎng)站用vue營(yíng)銷方式和手段有哪些
  • 網(wǎng)站網(wǎng)頁(yè)設(shè)計(jì)要求真正免費(fèi)的網(wǎng)站建站平臺(tái)運(yùn)營(yíng)
  • 做五金有哪些網(wǎng)站推廣觀看b站的廣告網(wǎng)站平臺(tái)
  • 網(wǎng)站做淘寶推廣收入平臺(tái)seo什么意思
  • 網(wǎng)站怎樣在360做優(yōu)化溫州seo推廣外包
  • 政府網(wǎng)站建設(shè)方案范文 工作方案寰宇seo
  • 網(wǎng)站設(shè)計(jì)要多少錢網(wǎng)絡(luò)營(yíng)銷培訓(xùn)班
  • 做網(wǎng)站軟件要錢嗎都有什么推廣平臺(tái)
  • 知名網(wǎng)站開(kāi)發(fā)語(yǔ)言成都網(wǎng)絡(luò)推廣哪家好