From eb87959393c7c334864cb11da3f387909599f7ba Mon Sep 17 00:00:00 2001 From: codereader Date: Sun, 22 Aug 2021 15:47:27 +0200 Subject: [PATCH] #5722: Add unit test checking the ability to load (and convert) an FBX model --- test/ModelExport.cpp | 23 +++++++++++++++++++++++ test/Models.cpp | 16 ++++++++++++++++ test/resources/fbx/test_cube.fbx | Bin 0 -> 24720 bytes 3 files changed, 39 insertions(+) create mode 100644 test/resources/fbx/test_cube.fbx diff --git a/test/ModelExport.cpp b/test/ModelExport.cpp index 59aeb8e84f..f18c3f8e6a 100644 --- a/test/ModelExport.cpp +++ b/test/ModelExport.cpp @@ -292,6 +292,29 @@ TEST_F(ModelExportTest, ConvertLwoToAse) runConverterCode(_context.getTestProjectPath() + "models/torch.lwo", outputPath); } +TEST_F(ModelExportTest, ConvertFbxToAse) +{ + auto outputPath = _context.getTemporaryDataPath() + "conversiontest.lwo"; + auto extension = string::to_upper_copy(os::getExtension(outputPath)); + auto inputPath = _context.getTestResourcePath() + "fbx/test_cube.fbx"; + + EXPECT_FALSE(fs::exists(outputPath)) << outputPath << " already exists"; + + // Invoke the converter code + GlobalCommandSystem().executeCommand("ConvertModel", cmd::ArgumentList{ inputPath, outputPath, extension }); + + EXPECT_TRUE(fs::exists(outputPath)) << outputPath << " should have been created"; + + auto importer = GlobalModelFormatManager().getImporter(extension); + auto exportedModel = importer->loadModelFromPath(outputPath); + + EXPECT_TRUE(exportedModel) << "No FBX model has been created"; + EXPECT_EQ(exportedModel->getSurfaceCount(), 1); + EXPECT_EQ(exportedModel->getSurface(0).getDefaultMaterial(), "phong1"); + EXPECT_EQ(exportedModel->getVertexCount(), 8); + EXPECT_EQ(exportedModel->getPolyCount(), 12); +} + TEST_F(ModelExportTest, ConvertAseToLwo) { // Convert the torch to ASE first, then back to LWO diff --git a/test/Models.cpp b/test/Models.cpp index fef6497907..d2c465c83d 100644 --- a/test/Models.cpp +++ b/test/Models.cpp @@ -437,4 +437,20 @@ TEST_F(AseImportTest, ParseGeomObjectWithoutMaterialRef) } } +TEST_F(ModelTest, LoadFbxModel) +{ + auto inputPath = _context.getTestResourcePath() + "fbx/test_cube.fbx"; + + auto importer = GlobalModelFormatManager().getImporter("FBX"); + EXPECT_TRUE(importer) << "No FBX importer available"; + + auto model = importer->loadModelFromPath(inputPath); + + EXPECT_TRUE(model) << "No FBX model has been loaded"; + EXPECT_EQ(model->getSurfaceCount(), 1); + EXPECT_EQ(model->getSurface(0).getDefaultMaterial(), "phong1"); + EXPECT_EQ(model->getVertexCount(), 8); + EXPECT_EQ(model->getPolyCount(), 12); +} + } diff --git a/test/resources/fbx/test_cube.fbx b/test/resources/fbx/test_cube.fbx new file mode 100644 index 0000000000000000000000000000000000000000..7b68b353f09c7c6ef02475b71d57fc61e5481554 GIT binary patch literal 24720 zcmeHPdvILUd0&HV$+m2ac@xqKFtG_>OMU>R0ln5T!jdJll8qe~e6@Qe-FUTkd-tx8 zGLVFXKSI*SWYV-HO`++OHZvqZhc=}2;k3XsWT1sVnufNMGSi{J3=JX)9S8;Y`-}`48>~niA zoJ5ne^KPl2a5l1em^32|v~I{L7M+SFd{C|u=%V5o2$wTOi!!k5=7# z#p;w(s#rCq6Z|x^yE+&Do3-{tW#*uxijj(t{nH>@=@Qe__yV&6ZW>riMhuOmPY|Xg;;K&P0q`| zA6(yJu58lGX2nx+g;x%H4s}1Ps9coHTXw6Zf>sZNW2-f}n5kDELgou;S8CtUQ!W>s zyo#U)?NWh!B5E~M(wJaLPU9BHK;JO1yFf;Tu+OJW9QFZ=qH{bl&JJ1gR{P*sEB2{~ z&^`JPz#pL9IA9Ly3D^)6aj9d6Yd{Z$(1;TOG<8vXjE0ii_6?0G)5?j^w7K)BLg$|C z9oKFr?9TSij_Y<^eO<@yZM!;lV&p&(4I-{`CY=u0^gBhnj!l|$(9LKaD&i`a=|k9U z4ebtE6+dUq+JyvPxr?id(0yTbm_4YzBxm_I1H3x~zaR;`j%6a=at(B&B4S5e{31G? zAht?V8oJB<2KE8PNxAsBHQ3@FOZ1oXIOK^Aw}yN!rrp3_BHgqn?>n!22 zRzuo>!stfY-}=q%FaOn*Pd)MYKmGZZuU_)TPmdUN;4&y}H3=oUIy(7P9oJsfxu?Bj zx9;lK?b>n8qXxhpRXvjl5~f{rB2B{7K2ddwh3l<7yE}I5zS^>~n;6O1Y|zO}&h~v8 z(JChm{^CMGI)Xg+iUh2hA$6)va}tEhnK3y70_b?TXU?gp5!9g}93D4N^6e>G=MMw0 z`a=f9RUrgCjUk+=Qhk`87%*3cFzAr|9_8Nkg+V@e1Lts}Pe+J?DdXYYQ&v}8=sFwqsEDrJ>PUqs^vXcM=80!Q65p*0G15zY7D$-3FH7 z$$iy|@6IUoMk!ZJ;mIeSWJJi0@*%x}bO?@6XUOu7QwPxAX6EvnIEagO7+6rKK9KvW zo=5%~fx%=aHdLRaf||{hH_nQuUnA3=$~`Qh48S7ksy>>P_-cgsK7&9u6wDM*S_NeA zQ@1{Q;7M{Y?XiGRGxjefaIYD{wlGnQiQxb_T5rkQ!+K(jZs3M!|Dc2dMWB>f@#SUxmOC zQ`U~!lQ#KD-mb)4)u;aG`uI!h!d02dEaQvpVzD6YC=kZI2}JAO0{*tkW=)Hxc0OG%-ub+k=HHe$LyJM z5y1k!*gr8BIMOiJRB}cBYJ9sDGY%@k`3ijq-$V+SwJUkgQLCj1LkZ|d4Umoy1TkpP zrNOy=tmO)s-#3u9he+^aMyeBN1?W`+Xjce?h7bHTomf}1DaA@VLo|#h5wsMdaotm~ zc@N7iR8o80pfzuM|7y6DXch6gmki)kUZ=pH;hI{o@W00E?&JV1oIlKTR4lxj@hiHXcB^eVgWgEDr{syr353XRqMKUG?Je8}b#d_4hiin1UFi@>`zHC)0YDsE*&@D~j z7dHDc#ynyYUtYvQ2o<;`3Qxpp1{sXl`)peN^}YF;*4$Fj*Rk!SEh6I$vd$5YMr*pOd64cxOgKfypO5R@XwYE;C=$`&7k#u! zT4~QsTLt&_N)pDG42&zOA_^H2u0Cq#ZJMJsLQz#t&EE|iN5o^3JbZ}K56`iRJF&b+ zMd-z<5f8u2faH`b#>1g9d3dhsO zmdHzbt25=LMyuxx=zc9UnhC@F0oR+cibK|t@jrM;trd2L`0#g#9x*|KCAK>lOzf~X z1jFjgm}iwLWebZ7OLG5b3|X%Z;Ssq*`22iC=A!Wf~EUm(@j18o#~IU0;?*4l{%kywFT zaWS*>dVHOsr45X5nWI%o%09h1{*oMr-ZI2C!lhtGgiZ35g|2;<)tVrZlfqYW)AW={ z$*xrP&XwH~IZWM|%&zVS7*5pAYIHQ89``4USe|uDbrk0+F&_70L)gen82ymuu8f{a zb>VXgw)b4GK~^vpLJUfDkp@nthU(um@&;T$iKG@~1FvE7jK#1+TuGya|1~Mat}Xh4 zFpc;Q<})`}k^hvafpF`}E4ykrW+h!Q*2sZ!FJnn#@5f0h)Yxiaf~Q);lam$OU+O^d zuEFFc%>zs@=*oO<#F=%M%){EMK}8XR2PS!xXDv^UCk-BI_O6YkayiXoS!%RhuGNsX z-KGy=D)ePFj_4V$UZ+h;^?r?U#2iMuMsSuf8Twv&CQF|aUG(8vi(DC61mUPwlUtJP zG0_al;Utu=HG^^_3FU|BQLMQ{jdop;+Ah{yqDCKY1|?CWzco-;L9>God-R~KvPw)O z+Q1Dfo*&7eu$&}8g6?hQ?S9uAbY>iXxKxat0>d(S1J6ip0z9Acbc~L-s9~{gYLm%) zt4YwqX+YOsRojw{Bt4P_^pF7>Sp-K+z@7X-yVMwIbN62|l7x~QwX|s5b+kL;*?}#w zzO;lzm5Vsa2?rytj<^+nxhyPZA>PFf3nilCT>YT>gdwM436XIb5%sd|+PGqgBo0dt zr_;;Z=?XTGa9CfwTyTT6{h&LZTM`!wBL{ zH;3MYC04!%;p8LP+fpYNxAF{9SRDviof%~%k!`7bo-+6hg?u(f`LLg*VH0uQz@5+G z*}JrVBn?_mY^Vcf>BXN>t2AY&%2@35c&U<=zetalDo0lk@E)1!8@pgL{Q`*YQD*`?<<0c||w0mRpn5wU2;kIDA< z^a|Gm-i9m{?78Fz$nkLFl{`-r^?21CGOi}Xe$Tc)p7_j(Q@`@yaF*_q$LT`IndiB3 z%#eEqT^`IA+oJ<}+&RG1-1UpQr?~SYAPeuXMP@^otAI~1sxLZ$iVZn@(clodg@w5- zILLTz9xuX=8_oZN@uiI-OSQ-{sT48qc9cKL}a*&ZxeAI+IC{ZIy>s2HUqT999p`!d{sba$b2Vo<8}} z4Z1429LlqLlWC=w=X{4A2rZn?XTHtbOydeX6+PuixfFLX&;!4Ix~ zj?aj;Gpy655w|!$<(8ndJ*Q%cBYGcW8q|TE-=$D;8t=ok-l1c}Fzlm)zfH%8C)h_F zIy{LjjzROke4TbPz(M_&47ud4#;U!ADZApJucGk8S5*TGv?)Z2!lT=*p&x<>65vhU z^hX6WC=dbV3~>d1OLE{2I(bJ{U0X!FNj)a9x2W!)>ig7c&1tGTo<4ZscapB(lR&gm zJt_@=XABBVc~H)!o8e`;3xRjE>E1Z*p{Z#-bnBh3X|vWIRU?obW#C%DdCM2=;2Nr8A?EM%^%1gwGjP zlPDGh8k?}+F^G^lqv$|`pqN+hZP|Y34SUsaU_T%%GNCpkLt@(LHur& zGNH2BZyW4{B(Pb5AhwOfvuTSq#eW+}G9KyglED&DYCW+yhk;E2*J4IpP@P^$8PA^1 zem9L|_ZVC*U^p!q#?Yu_V&^|IYKdi1%a)h>rH1r1R=b3W!~z(}QM7Dm{HSayt+>gk z(zIY1b_>NQ@>e6+34_apOsEAz(h(Ibhy^bj)tVOWchU$qZa6k_Arvj#2HJ}XH-7L= zgT8606nayCC&o27&z>?{xHf%`k=_y-T-3!oew_VmRX_SAwti_Lg)^)vb%Vl zEa;uD5aBp;Vg|vc=5gb%Fp_9~1(VUbGt4C`@X3#tz(IdtfNTvxFcvj<$OQ;pW4a1r zCdxj&!SXk9UU|GD-SZ=HcN@OI3`Eb!Jsw?A2Ns_A4*%z%Xp}&czn_z7tFQc3wLUyIgjO6SdqV)&UBK&#EW~F zkejUWt8D_z-Vkx*BZu_01n9=^qv`4|%A-}0od+0NR2O$4sn=7jl<%YcA>I~$(}22~ z6(Xojw5#qLs`s!`y(qQNb@MG6K(y`+@gSPKNTY_o$cycuYIt|>e#REHcZJx9y-mHV z@?zI}hNOE#G)&&*4aqbQ4n3*@~_&R z3y##vZkR?Iu_3%d5yiuok8FmQcHE)4Ax^HL-QWeO#!o}<>VDY3>Iku5=3#m~9q(mh z0#)}}@`bMV45Zy55~8o&1*j27L(b;A}_$?ag~+Dmkc zo=pV3R>fAQGpb3|u4>XI7&GbTZ;h|BuFox%^h<-47YrF?O0}XdhumU#I7o1L>4OGl zh80I$TtyTLe6_1#6?u{%VCOZgBKb#9C0<)P``m5umsX+sRKCZYBujy7pisu7K5wSt zoOHCu7|JAG34$8R9R}r@8a2}ze1R8n1=Vh&FLrJ7t>cqiLy|g-z$j}}|G`(*g3rzk zidWv3P-lJM-0}4^@+tZM>0dwC_RoL!?^BP=p1k{_cemXc0mZlWe^%wKBftK!AH4a( QCtiEC?LVu(b@{sg1J}5KYXATM literal 0 HcmV?d00001