国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

10、將osg的Geometry轉(zhuǎn)換為虛幻引擎的UStaticMesh

這篇具有很好參考價(jià)值的文章主要介紹了10、將osg的Geometry轉(zhuǎn)換為虛幻引擎的UStaticMesh。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

將osg::Geometry轉(zhuǎn)換為FMeshDescription,通過(guò)FMeshDescription即可構(gòu)建UStaticMesh,下面這段代碼主要是為了轉(zhuǎn)換傾斜攝影的osgb數(shù)據(jù),但是傾斜攝影數(shù)據(jù)中本身不攜帶法線數(shù)據(jù),也不需要計(jì)算法線,因此如果要轉(zhuǎn)換其他攜帶或需要計(jì)算法線的osg::Geometry的數(shù)據(jù),請(qǐng)另行將法線信息補(bǔ)充到FMeshDescription中文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-859001.html

FMeshDescription ConvertOsgGeometryToMeshDescription(osg::ref_ptr<osg::Geometry> InGeometry)
{
	FMeshDescription result;
	//頂點(diǎn)
	osg::MixinVector<osg::Vec3f>* vertices = dynamic_cast<osg::MixinVector<osg::Vec3f>*>(InGeometry->getVertexArray());
	if (!vertices)
		return result;
	//紋理坐標(biāo)
	osg::MixinVector<osg::Vec2f>* texCoords = dynamic_cast<osg::MixinVector<osg::Vec2f>*>(InGeometry->getTexCoordArray(0));
	assert(vertices->size() == texCoords->size());

	//法線,傾斜攝影數(shù)據(jù)沒(méi)有法線,其實(shí)不需要
	osg::MixinVector<osg::Vec3f>* normals = dynamic_cast<osg::MixinVector<osg::Vec3f>*>(InGeometry->getNormalArray());
	//索引
	osg::MixinVector<unsigned int>* indices = dynamic_cast<osg::MixinVector<unsigned int>*>(InGeometry->getPrimitiveSet(0));
	if (!indices)
		return result;
	assert(indices->size() / 3 == 0);

	FStaticMeshAttributes attributes(result);
	//注冊(cè)默認(rèn)的靜態(tài)模型屬性
	attributes.Register();

	//FMeshDescriptionBuilder用于設(shè)置頂點(diǎn)、法線、UV坐標(biāo)等信息
	FMeshDescriptionBuilder meshDescBuilder;
	meshDescBuilder.SetMeshDescription(&result);
	//允許使用多邊形組
	meshDescBuilder.EnablePolyGroups();
	//設(shè)置UV坐標(biāo)的級(jí)數(shù)為1
	meshDescBuilder.SetNumUVLayers(1);
	FPolygonGroupID GroupId = meshDescBuilder.AppendPolygonGroup();

	const uint32 vertexCount = vertices->size();
	TArray<FVertexID> vertexIDs;
	vertexIDs.SetNum(vertices->size());
	const float unit = 100.0;
	// 定義一個(gè)Lambda表達(dá)式,用于將OSG坐標(biāo)轉(zhuǎn)換為UE坐標(biāo)
	auto ConvertOSGToUE = [&unit](const osg::Vec3f& OSGCoordinate) -> FVector
		{
			float X = OSGCoordinate.x() * unit;
			float Y = -OSGCoordinate.y() * unit; 
			float Z = OSGCoordinate.z() * unit; 

			return FVector(X, Y, Z);
		};
	for (uint32 i = 0; i < vertexCount; ++i) {
		const osg::Vec3f vertex = vertices->at(i);
		vertexIDs[i] = meshDescBuilder.AppendVertex(ConvertOSGToUE(vertex));
	}

	const uint32 indiceCount = indices->size();
	assert(indiceCount / 3 == 0);
	const uint32 triangleCount = indiceCount / 3;
	for (uint32 i = 0; i < triangleCount; ++i) {
		const uint32 indice1 = indices->at(i * 3);
		const FVertexInstanceID vertexInstanceId1 = meshDescBuilder.AppendInstance(vertexIDs[indice1]);
		const osg::Vec2f texCoord1 = texCoords->at(indice1);
		meshDescBuilder.SetInstanceUV(vertexInstanceId1, FVector2D(texCoord1.x(), 1 - texCoord1.y()), 0);

		const uint32 indice2 = indices->at(i * 3 + 1);
		const FVertexInstanceID vertexInstanceId2 = meshDescBuilder.AppendInstance(vertexIDs[indice2]);
		const osg::Vec2f texCoord2 = texCoords->at(indice2);
		meshDescBuilder.SetInstanceUV(vertexInstanceId2, FVector2D(texCoord2.x(), 1 - texCoord2.y()), 0);

		const uint32 indice3 = indices->at(i * 3 + 2);
		const FVertexInstanceID vertexInstanceId3 = meshDescBuilder.AppendInstance(vertexIDs[indice3]);
		const osg::Vec2f texCoord3 = texCoords->at(indice3);
		meshDescBuilder.SetInstanceUV(vertexInstanceId3, FVector2D(texCoord3.x(), 1 - texCoord3.y()), 0);

		meshDescBuilder.AppendTriangle(vertexInstanceId1, vertexInstanceId2, vertexInstanceId3, GroupId);

	}

	//FStaticMeshOperations::ComputeTriangleTangentsAndNormals(result);//傾斜攝影數(shù)據(jù)沒(méi)有法線,不必計(jì)算
	return result;
}

到了這里,關(guān)于10、將osg的Geometry轉(zhuǎn)換為虛幻引擎的UStaticMesh的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 利用 Visual Studio 2022 加速虛幻引擎應(yīng)用開(kāi)發(fā)

    利用 Visual Studio 2022 加速虛幻引擎應(yīng)用開(kāi)發(fā)

    自上次官宣對(duì)虛幻引擎的支持后,我們的開(kāi)發(fā)團(tuán)隊(duì)一直在努力構(gòu)建新一代的虛幻引擎集成功能。今天,我們很高興地向你展示我們所開(kāi)發(fā)的一系列用于提升游戲開(kāi)發(fā)效率的各種新特性。在下面的文章中,你將了解如何查看流式日志,查看 Visual Studio 中的頭文件工具警告,并了

    2023年04月12日
    瀏覽(29)
  • 虛幻引擎游戲開(kāi)發(fā)過(guò)程中,游戲鼠標(biāo)如何雙擊判定?

    虛幻引擎游戲開(kāi)發(fā)過(guò)程中,游戲鼠標(biāo)如何雙擊判定?

    UE虛幻引擎對(duì)于游戲開(kāi)發(fā)者來(lái)說(shuō)都不陌生,市面上有47%主機(jī)游戲使用虛幻引擎開(kāi)發(fā)游戲。作為是一款游戲的核心動(dòng)力,它的功能十分完善,囊括了場(chǎng)景制作、燈光渲染、動(dòng)作鏡頭、粒子特效、材質(zhì)藍(lán)圖等。本文介紹了虛幻引擎游戲開(kāi)發(fā)過(guò)程中游戲鼠標(biāo)雙擊判定,一起來(lái)看看吧

    2024年02月13日
    瀏覽(27)
  • 虛幻引擎5 AR開(kāi)發(fā)教程03:創(chuàng)建第一個(gè)AR App

    虛幻引擎5 AR開(kāi)發(fā)教程03:創(chuàng)建第一個(gè)AR App

    在本教程中,我們將學(xué)習(xí)如何在項(xiàng)目中添加 AR 功能并在虛幻引擎 5 中創(chuàng)建我們的第一個(gè) AR 應(yīng)用程序。 步驟 01:創(chuàng)建和設(shè)置 UE5(虛幻引擎 5)AR 項(xiàng)目: 教程 01 = 右鍵單擊內(nèi)容瀏覽器 = 選擇雜項(xiàng) 數(shù)據(jù)資產(chǎn) = 選擇 ARSessionConfig = 將其命名為(AR_DefaultSessionConfig)并保存。 = 打開(kāi)

    2024年02月02日
    瀏覽(40)
  • 虛幻引擎架構(gòu)自動(dòng)化及藍(lán)圖編輯器高級(jí)開(kāi)發(fā)進(jìn)修班

    虛幻引擎架構(gòu)自動(dòng)化及藍(lán)圖編輯器高級(jí)開(kāi)發(fā)進(jìn)修班

    課程名稱(chēng):虛幻引擎架構(gòu)自動(dòng)化及藍(lán)圖編輯器高級(jí)開(kāi)發(fā)進(jìn)修班 課程介紹 大家好 我們即將推出一套課程 自動(dòng)化系統(tǒng)開(kāi)發(fā)。 自動(dòng)化技術(shù)在項(xiàng)目開(kāi)發(fā)的前中后期都大量運(yùn)用。如何您是一家游戲公司,做的是網(wǎng)絡(luò)游戲,是不是經(jīng)常會(huì)遇到程序員打包加部署需要半天時(shí)間,測(cè)試demo功

    2024年04月11日
    瀏覽(19)
  • 【程序員必備】UE4 C++ 虛幻引擎:詳解JSON文件讀、寫(xiě)、解析,打造高效開(kāi)發(fā)!

    【程序員必備】UE4 C++ 虛幻引擎:詳解JSON文件讀、寫(xiě)、解析,打造高效開(kāi)發(fā)!

    ???♂? 作者:海碼007 ?? 專(zhuān)欄:UE虛幻引擎專(zhuān)欄 ?? 標(biāo)題:【程序員必備】UE4 C++ 虛幻引擎:詳解JSON文件讀、寫(xiě)、解析,打造高效開(kāi)發(fā)! ?? 寄語(yǔ):人生的意義或許可以發(fā)揮自己全部的潛力,所以加油吧! ?? 最后: 文章作者技術(shù)和水平有限,如果文中出現(xiàn)錯(cuò)誤,希望大

    2024年02月03日
    瀏覽(23)
  • 虛幻學(xué)習(xí)筆記10—C++函數(shù)與藍(lán)圖的通信

    虛幻學(xué)習(xí)筆記10—C++函數(shù)與藍(lán)圖的通信

    ? ? ? ? 除了上一章C++變量與藍(lán)圖通信講的變量能與藍(lán)圖通信外,還有函數(shù)和枚舉也可以和藍(lán)圖通信。函數(shù)的為”UFUNCTION“、枚舉的為”UENUM“。 2.1、BlueprintCallable藍(lán)圖中調(diào)用 ??該函數(shù)時(shí)帶執(zhí)行的,帶入如下。編譯成功后在藍(lán)圖中輸入后可以找到,并點(diǎn)擊使用如

    2024年02月04日
    瀏覽(17)
  • 虛幻4學(xué)習(xí)筆記(10)藍(lán)圖接口、拾取物品-射線檢測(cè)

    虛幻4學(xué)習(xí)筆記(10)藍(lán)圖接口、拾取物品-射線檢測(cè)

    B站UP諶嘉誠(chéng)課程:https://www.bilibili.com/video/BV164411Y732 添加:內(nèi)容瀏覽器 右鍵 藍(lán)圖 藍(lán)圖接口 新建Doorinterface 藍(lán)圖接口 添加canOpendoor 和test函數(shù) test函數(shù)添加輸入輸出參數(shù) 組件添加藍(lán)圖接口后可以調(diào)用其函數(shù) 只有入?yún)](méi)有出參 可以當(dāng)做事件調(diào)用 有出參可以當(dāng)函數(shù)調(diào)用使用 使用

    2024年02月08日
    瀏覽(16)
  • OSG三維渲染引擎編程學(xué)習(xí)之八十五:“第八章:OSG文字” 之 “8.4 文字特效實(shí)例”

    目錄 第八章 OSG文字 8.4 文字特效實(shí)例 ? ? ? 適當(dāng)?shù)奈淖中畔?duì)于顯示場(chǎng)景信息是非常重要的。在OSG中,osgText提供了向場(chǎng)景中添加文字的強(qiáng)大功能,由于有第三方插件FreeType的支撐,可完全支持TrueType字體。 ? ? ? TrueType是由AppleComputer公司和Microsoft公司聯(lián)合提出的一種新型數(shù)

    2024年02月11日
    瀏覽(20)
  • 【UE 插件】UE4 虛幻引擎 插件開(kāi)發(fā)(帶源碼插件打包、無(wú)源碼插件打包) 有這一篇文章就夠了?。?!

    【UE 插件】UE4 虛幻引擎 插件開(kāi)發(fā)(帶源碼插件打包、無(wú)源碼插件打包) 有這一篇文章就夠了?。?!

    ???♂? 作者:海碼007 ?? 專(zhuān)欄:UE虛幻引擎專(zhuān)欄 ?? 標(biāo)題:【UE 插件】UE4 虛幻引擎 插件開(kāi)發(fā)(帶源碼插件打包、無(wú)源碼插件打包) 有這一篇文章就夠了!?。??? 寄語(yǔ):將來(lái)的自己肯定會(huì)感謝現(xiàn)在努力的你! ?? 最后: 文章作者技術(shù)和水平有限,如果文中出現(xiàn)錯(cuò)誤,希

    2024年02月08日
    瀏覽(25)
  • OSG三維渲染引擎編程學(xué)習(xí)之七十七:“第七章:OSG場(chǎng)景圖形交互” 之 “7.9 場(chǎng)景漫游”

    目錄 第七章 OSG場(chǎng)景圖形交互 7.9?場(chǎng)景漫游 7.9.1 場(chǎng)景漫游描述 7.9.2?自定義場(chǎng)景漫游器

    2024年02月07日
    瀏覽(34)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包