ASPOSE3DのRVM→GLTF変換


#1

ASPOSE3Dのライセンスを購入しようとしております。
そのため、事前の検証としてRVMファイルを変換するためコード(C#)を作成し、実行しました。

try
{
Scene scene = new Scene();
var opt = new RvmLoadOptions(FileContentType.ASCII);
scene.Open(base.Input, opt);

GLTFSaveOptions option = new GLTFSaveOptions(FileFormat.GLTF2);

scene.Save(output, option);

}
catch (Exception e)
{

}

一部のファイルは成功したのですが、一部のファイルは失敗してしまいました。
実行時のエラーログは以下です。

Aspose.ThreeD.ImportException: Cannot open this file
場所 #=zhlD1YJA1Tao1_RGQr7s0$Zk=.#=z52XOx4k=(#=zvvpA_TymM0w8VrrQ71rQp$Oay79i #=zrpJQuDo=, CancellationToken #=zAlb6p_Q=)
— 直前に例外がスローされた場所からのスタック トレースの終わり —
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zEoXK9mLBaX8kPsjcr7syYKE=(Exception #=zsPinTU4=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=z6MSrp9$lg7CsvNKQK1LVSt2hu7uGtYYPnQ==(Object #=zsPinTU4=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zwX_ZsG6w5F0crRP8RJeOqR5TUa7q(MethodBase #=zsPinTU4=, Boolean #=zkhiDAdc=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=z7fOIiqgOSGzMaROWcg==(#=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4= #=zsPinTU4=, #=qKHyF1EaSIQ9toKogYNBW$7OM9FEkjnpqhJkQPE76Gv0= #=zkhiDAdc=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zNVSEffNSIA6$7azbRIzFBQzy6ZrrvewzOg==()
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=z8huNweBljkP7oRtjT08Ftno=(Boolean #=zsPinTU4=)
— 直前に例外がスローされた場所からのスタック トレースの終わり —
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zEoXK9mLBaX8kPsjcr7syYKE=(Exception #=zsPinTU4=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=z6MSrp9$lg7CsvNKQK1LVSt2hu7uGtYYPnQ==(Object #=zsPinTU4=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zaVtLXTE$bRPF1rBPrDlli5BEUK8buajXdqo9FLBndngq()
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zuAlbObS1u14KWFqdFfON9l8=(Object #=zsPinTU4=, UInt32 #=zkhiDAdc=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=z8huNweBljkP7oRtjT08Ftno=(Boolean #=zsPinTU4=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zmw8H6fy4e1YX7j71zsSuyn8UafMN8uv5hPKsZ8k=()
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zBkMHHUropvX_9uEnOPN6bIE_ty9Z1$giOQ==(Object[] #=zsPinTU4=, Type[] #=zkhiDAdc=, Type[] #=zzIKRcaw=, Object[] #=zoLaO_uo=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=z4irKW6CUsN8j$VVTcHu_5$8=(Stream #=zsPinTU4=, Int32 #=zkhiDAdc=, Object[] #=zzIKRcaw=, Type[] #=zoLaO_uo=, Type[] #=z3ZXgovc=, Object[] #=zox1872w=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zYhecCCd9A6PLF71Ak2dzu_KZ7bfkigqqSVkrtlo=(Int32 #=zsPinTU4=, Type[] #=zkhiDAdc=, Type[] #=zzIKRcaw=, Boolean #=zoLaO_uo=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zy4yOnchuMoMt$GV7R8$ZG3O9Vye_Wo4dmQ==(#=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4= #=zsPinTU4=, #=qKHyF1EaSIQ9toKogYNBW$7OM9FEkjnpqhJkQPE76Gv0= #=zkhiDAdc=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zNVSEffNSIA6$7azbRIzFBQzy6ZrrvewzOg==()
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=z8huNweBljkP7oRtjT08Ftno=(Boolean #=zsPinTU4=)
— 直前に例外がスローされた場所からのスタック トレースの終わり —
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zEoXK9mLBaX8kPsjcr7syYKE=(Exception #=zsPinTU4=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=z6MSrp9$lg7CsvNKQK1LVSt2hu7uGtYYPnQ==(Object #=zsPinTU4=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zaVtLXTE$bRPF1rBPrDlli5BEUK8buajXdqo9FLBndngq()
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zHfC35lSJJl05eliM1twcNzETEfku(#=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4= #=zsPinTU4=, #=qKHyF1EaSIQ9toKogYNBW$7OM9FEkjnpqhJkQPE76Gv0= #=zkhiDAdc=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zNVSEffNSIA6$7azbRIzFBQzy6ZrrvewzOg==()
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=z8huNweBljkP7oRtjT08Ftno=(Boolean #=zsPinTU4=)
— 直前に例外がスローされた場所からのスタック トレースの終わり —
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zEoXK9mLBaX8kPsjcr7syYKE=(Exception #=zsPinTU4=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=z6MSrp9$lg7CsvNKQK1LVSt2hu7uGtYYPnQ==(Object #=zsPinTU4=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zaVtLXTE$bRPF1rBPrDlli5BEUK8buajXdqo9FLBndngq()
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zuAlbObS1u14KWFqdFfON9l8=(Object #=zsPinTU4=, UInt32 #=zkhiDAdc=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=z8huNweBljkP7oRtjT08Ftno=(Boolean #=zsPinTU4=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=z8huNweBljkP7oRtjT08Ftno=(Boolean #=zsPinTU4=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zmw8H6fy4e1YX7j71zsSuyn8UafMN8uv5hPKsZ8k=()
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zBkMHHUropvX_9uEnOPN6bIE_ty9Z1$giOQ==(Object[] #=zsPinTU4=, Type[] #=zkhiDAdc=, Type[] #=zzIKRcaw=, Object[] #=zoLaO_uo=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zPTN$FKUEGvhXvw0b9w==(Stream #=zsPinTU4=, String #=zkhiDAdc=, Object[] #=zzIKRcaw=, Type[] #=zoLaO_uo=, Type[] #=z3ZXgovc=, Object[] #=zox1872w=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=zHb04d99TlXoIccsSuPNCtd$KNAA6(Stream #=zsPinTU4=, String #=zkhiDAdc=, Object[] #=zzIKRcaw=)
場所 #=q2A3pt0FFfnS9UFT1KpRHIVOgIUIs2mZ31oAxPrXJyn4=.#=z5lGzHIVXv9b9cyGZ3nW$eycKCkkk(Stream #=zsPinTU4=, String #=zkhiDAdc=, Object[] #=zzIKRcaw=)
場所 Aspose.ThreeD.Scene.Open(String fileName, LoadOptions options, CancellationToken cancellationToken)

RVMファイルを解析、編集したところ、失敗するRVMファイルから以下の情報を削除すると変換が成功いたしました。

PRIM
1 1
7
-0.0010000 0.0000000 0.0000000 50.7744000
0.0000000 -0.0010000 0.0000000 41.4081000
0.0000000 0.0000000 0.0010000 12.2217000
0.00 0.00 0.00
0.00 0.00 0.00
0.0000000 0.0000000 0.0000000 0.0000000 0.0000000
0.0000000 0.0000000 0.0000000 0.0000000

上記の情報の有無によって成功と失敗が分かれる原因を教えていただきたいです。

宜しくお願いいたします。


#2

@keisuke

サポートにお問い合わせいただきありがとうございます。

ソースファイルをZIPとして共有してください。 また、無料30日間の試用ライセンスでAPIをフル機能で評価できます。


#3

ソースファイルと使用したRVMファイル(OKとNG)をアップロードします。

FILE.zip (3.5 KB)

宜しくお願いいたします。


#4

@keisuke

データを共有していただきありがとうございます。

調査のため、ID THREEDNET-579のチケットを記録しました。 情報が利用可能になりましたらお知らせします。


#5

@keisuke

添付の修正プログラムを試してから、ご意見をお聞かせください。

Aspose.3D for .NET 19.10.2.zip


#6

ご対応ありがとうございます。
無事に変換できていることを確認しました。

私たちはNuGetを使用してライブラリをインストールしているのですが、
この修正が正式にリリースされるのはいつでしょうか?


#7

@keisuke

ご意見をお寄せいただきありがとうございます。

問題が解決されたことを喜んでお知らせします。 Aspose.3D for .NET 19.11は、2019年11月の第1週頃に暫定的に公開されます。その後、NuGetからインストールできます。


#8

頂いたdllを使用して変換できないRVMファイルがありました。
こちらも解析をお願いしたいです。
宜しくお願い致します。

RVM_NG.zip (16.8 KB)


#9

@keisuke

データを共有していただきありがとうございます。

調査のため、ID THREEDNET-582 のチケットを記録しました。 情報が利用可能になりましたらお知らせします。


#10

@keisuke

添付の修正プログラムを試してから、ご意見をお聞かせください。

Aspose.3D for .NET 19.10.4.zip (5.0 MB)


#11

無事に変換できていることを確認しました。
ありがとうございました。


#12

ASPOSEの仕様を確認させていただきたいのですが、変換可能なファイルのサイズ上限はありますか?


#13

@keisuke

ご意見をお寄せいただきありがとうございます。

システムメモリに依存するため、このような制限はありません。 glTFファイルはWebで使用されるため、GBのファイルを生成することはお勧めしません。


#14

ご回答ありがとうございました。