中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

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

網(wǎng)站建設(shè)維護(hù)協(xié)議建站abc

網(wǎng)站建設(shè)維護(hù)協(xié)議,建站abc,濰坊建設(shè)網(wǎng)站,wordpress退出登錄UE4/UE5 基于2D屏幕坐標(biāo)獲取場景3D坐標(biāo) 一、射線檢測1)定義1)射線與3D場景中的物體交互的流程2)射線檢測藍(lán)圖函數(shù)3)藍(lán)圖實現(xiàn)根據(jù)鼠標(biāo)點擊位置獲取場景中的坐標(biāo)值4)根據(jù)相機(jī)中心點獲取場景中的坐標(biāo)值5)射線檢…

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

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


一、射線檢測

1)定義

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

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

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

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

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

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

撒大聲地

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

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

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

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

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

6)C++實現(xiàn)手動創(chuàng)建射線檢測

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

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

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


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

二、非射線檢測的情況

1)根據(jù)相機(jī)當(dāng)前位置獲取中心點的世界坐標(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ī)位置的前方,視角方向)FVector CameraForwardVector = CameraRotation.Vector();FVector CameraCenterLocation = CameraLocation + CameraForwardVector * YourDistance;  // 替換 YourDistance 為相機(jī)中心點到相機(jī)位置的距離// 將相機(jī)中心點的位置轉(zhuǎn)換為場景中的坐標(biāo)FVector WorldLocation = CameraCenterLocation;// 打印結(jié)果UE_LOG(LogTemp, Warning, TEXT("Camera Center Location: %s"), *WorldLocation.ToString());}}
}
http://www.risenshineclean.com/news/2261.html

相關(guān)文章:

  • 太原市萬柏林區(qū)疫情防控最新消息專業(yè)seo培訓(xùn)學(xué)校
  • 專業(yè)做企業(yè)活動的趴網(wǎng)站全網(wǎng)自媒體平臺
  • 淄博高端網(wǎng)站建設(shè)網(wǎng)絡(luò)推廣什么做
  • 做包子網(wǎng)站營銷軟件哪個好
  • 郵箱網(wǎng)址查詢百度刷排名seo
  • 八方資源網(wǎng)做網(wǎng)站優(yōu)化怎么樣群排名優(yōu)化軟件
  • 如何做配音網(wǎng)站問卷調(diào)查網(wǎng)站
  • 六盤水南寧網(wǎng)站建設(shè)seo服務(wù)靠譜嗎
  • 網(wǎng)站后臺模板html優(yōu)化大師優(yōu)化項目有
  • 動態(tài)網(wǎng)站系統(tǒng)的5個組成部分代哥seo
  • wordpress資訊站臨沂seo整站優(yōu)化廠家
  • 杭州富陽做網(wǎng)站百度云網(wǎng)盤資源搜索
  • 給別人做網(wǎng)站去掉版權(quán)日本比分預(yù)測
  • 迪奧生物做圖網(wǎng)站寧波seo優(yōu)化公司排名
  • 做網(wǎng)站怎么融資2345網(wǎng)址導(dǎo)航大全
  • 自助建站亞馬遜關(guān)鍵詞排名查詢工具
  • 給自己的網(wǎng)站做鏡像網(wǎng)站外貿(mào)網(wǎng)站模板
  • 哪家網(wǎng)站建設(shè)服務(wù)好網(wǎng)絡(luò)廣告策劃與制作
  • 網(wǎng)站建設(shè)公司計劃書關(guān)鍵詞排名優(yōu)化公司哪家好
  • 電商網(wǎng)頁模板優(yōu)化快速排序
  • 上海設(shè)計網(wǎng)站開發(fā)深圳網(wǎng)站關(guān)鍵詞優(yōu)化推廣
  • 自己做視頻網(wǎng)站 在優(yōu)酷推廣競價推廣運營
  • 上海做網(wǎng)站 公司qq推廣官網(wǎng)
  • 江蘇外貿(mào)型網(wǎng)站制作搜索引擎原理
  • 大連做網(wǎng)站哪家服務(wù)好seo課程培訓(xùn)中心
  • 曲靖網(wǎng)站制作今日新聞?wù)?/a>
  • 地方門戶網(wǎng)站制作蘇州網(wǎng)站制作推廣
  • 北京建網(wǎng)站公司價格關(guān)鍵字排名查詢
  • 建設(shè)工程施工包括哪些工程深圳純手工seo
  • 松江微網(wǎng)站建設(shè)重慶seo技術(shù)分享