搜尋套件、儲存庫與 APP 分類

套件詳情v17.3.1

simple_3d

此套件是為了方便3D非專家(包括科學家)而創建的。

AndroidiOSWebmacOSWindowsLinux
近 30 天下載
210
喜歡數
25
Pub 分數
160

安裝套件

flutter pub add simple_3d

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

Simple 3D 是一個 Flutter 套件,專為非專家(特別是科學家和研究人員)簡化 3D 可視化而設計。它提供了一個易於使用的介面,讓使用者無需深入了解 3D 圖形程式設計知識即可建立和呈現 3D 場景。該套件支援 Android、iOS、Web、macOS、Windows 和 Linux 等多個平台,適用於跨平台應用。透過最少的設定,使用者可快速將 3D 模型、動畫與互動元件整合至其應用程式中。

適用情境

  • 科學數據可視化
  • 教育類3D示範
  • 互動式產品預覽
  • 跨平台3D應用
  • 原型設計 3D 界面

主要特色

  • 初學者使用的簡單API
  • 支援多個平台
  • 內建3D模型渲染
  • 輕巧且快速
  • 跨平台相容性

適合對象

  • 需要3D視覺化效果的科學家
  • Flutter 開發者初識 3D
  • 教育工作者創建互動內容
  • 應用原型設計者探索3D
  • 非技術用戶建構3D應用

使用建議

  • 有限的高級3D功能
  • 最適合簡單的3D場景
  • 可能需要對複雜模型進行額外優化
  • 不適合高階遊戲或模擬
  • 取決於底層 WebGL/OpenGL 性能

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

simple_3d

(en)Japanese ver is here.
(ja)この解説の日本語版はここにあります。

Overview

This package is a working Flutter(Dart) implementation of Simple 3D Format.
Simple 3D Format is a file format that makes it easy for non-experts to handle 3D objects.
The file output in this format has the extension .sp3d, and the inner class convert to JSON. All the data about one object is contained in one file.
This specification aims to minimize complexity, make it easier to read in a text editor, and make it versatile.
Made for science, it can be difficult to use in other genres. For the development of science, I aim to be able to use it without being affected by interests and conflicts.

Usage

Quick Start

I created a package for rendering Sp3dObj.
You can use it more easily by using the following packages.
See the simple_3d_renderer package for how to use it.

simple_3d_renderer
util_simple_3d

If you want to implement Undo/Redo functionality in an app that directly edits Sp3dObj,
you can use the following package.
file_state_manager

Although this is a very experimental project, there are also packages for converting from other 3D formats.
However, this package is intended for scientific use and only minimal compatibility is supported due to differences in functionality with other 3D formats.
convert_simple_3d

Create Data
final sp3dObj = Sp3dObj(
    [Sp3dV3D(0, 0, 0)],
    [
      Sp3dFragment(
          [
            Sp3dFace([0], 0)
          ],
          isParticle: true,
          r: 1)
    ],
    [
      Sp3dMaterial(
        Color.fromARGB(255, 0, 255, 0),
        true,
        1,
        Color.fromARGB(255, 0, 255, 0),
      )
    ],
    []);
Operation example
// Move
sp3dObj.move(Sp3dV3D(1,0,0));
// Rotate
sp3dObj.rotate(Sp3dV3D(0,1,0),45*pi/180);
// Vertex manipulation
// You can do many other things with the Sp3dV3D feature.
sp3dObj.vertices[0] += Sp3dV3D(1,0,0);
Convert
final sp3dObjDict = sp3dObj.toDict();
Load
final restored = Sp3dObj.fromDict(sp3dObjDict);

Support

If you need paid support for any reason, please contact my company.
This package is developed by me personally, but may be supported via the company.
SimpleAppli Inc.

Format Name

Simple 3D Format

Filename Extension

.sp3d

MIME Type ( Temporary )

model/x.sp3d

Suitable

Science(For example, physical calculation), Simple Games, etc.

Not Suitable

Advanced graphics.

Structure ( Decoded object )

  • Sp3dObj
    • vertices: List
      • v: Sp3dV3D
    • fragments: List
      • fragment: Sp3dFragment
        • faces: List, The definition of the face. Represents a triangular or square mesh.
          • face: Sp3dFace
            • vertexIndexList: List, Vertices index. Counterclockwise rotation from the upper left.
              • index: int
            • materialIndex: int?
        • isParticle: bool.
        • r: double, Radius for particle type.
        • physics: Sp3dPhysics?, An object with multiple variables used in physical calculations.
        • isTouchable: bool, If false, rendered this fragment will be excluded from touche calculation.
        • name: String?, The fragment name.
        • option: Map<String, dynamic>?, Optional attributes that may be added for each app. However, only parameters that can be converted to JSON can be entered.
    • materials: List
      • material: Sp3dMaterial
        • bg: Color, argb.
        • isFill: bool, if false, stroke line only.
        • strokeWidth: double
        • strokeColor: Color, argb
        • imageIndex: int?, Fills the face with the specified image, which is not null.
        • textureCoordinates: List?, Cutout coordinates when you want to use a part of the image. 3 or 6 points(In the case of a square, specify it with two triangles).
        • name: String?, The material name.
        • option: Map<String, dynamic>?, Optional attributes that may be added for each app. However, only parameters that can be converted to JSON can be entered.
    • images: list
      • image: Uint8List, png data.
    • id: String?
    • name: String?
    • author: String?
    • physics: Sp3dPhysics?, An object with multiple variables used in physical calculations.
    • option: Map<String, dynamic>?, Optional attributes that may be added for each app. However, only parameters that can be converted to JSON can be entered.
    • layerNum: int, Drawing priority in the depth direction that is enabled for rendering software. Layers with smaller numbers are drawn first.
    • drawMode: enum, Enum for specifying the mode in which the Sp3dObj is drawn by the renderer.

About version control

It is as follows in version 3.1.0 or later.
The C part will be changed at the time of version upgrade.

  • Changes such as adding variables, structure change that cause problems when reading previous files.
    • C.X.X
  • Adding methods, etc.
    • X.C.X
  • Minor changes and bug fixes.
    • X.X.C

License

This software is released under the MIT License, see LICENSE file.

Trademarks

  • “Dart” and “Flutter” are trademarks of Google LLC.
    This package is not developed or endorsed by Google LLC.

所屬分類

依賴

依賴清單 1 項

  • file_state_manager^3.0.1

原始碼儲存庫

使用此套件的專案