패키지, 저장소 및 앱 카테고리 검색

패키지 상세v17.3.1

simple_3d

이 패키지는 3D 전문가가 아닌 사람들을 위한 편의를 위해 과학자도 포함하여 제작되었습니다.

AndroidiOSWebmacOSWindowsLinux
30일 다운로드
210
좋아요
25
Pub 점수
160

패키지 설치

flutter pub add simple_3d

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

Simple 3D는 비전문가, 특히 과학자와 연구자를 위한 3D 시각화를 간소화하기 위해 설계된 Flutter 패키지입니다. 3D 그래픽 프로그래밍에 깊은 지식이 필요 없이 3D 장면을 생성하고 렌더링할 수 있는 접근성 높은 인터페이스를 제공합니다. Android, iOS, Web, macOS, Windows, Linux 등 다양한 플랫폼을 지원하여 크로스플랫폼 애플리케이션에 유용합니다. 최소한의 설정으로 사용자는 앱에 3D 모델, 애니메이션 및 상호작용 요소를 빠르게 통합할 수 있습니다.

사용 사례

  • 과학 데이터 시각화
  • 교육용 3D 시연
  • 인터랙티브 제품 미리보기
  • 크로스 플랫폼 3D 앱
  • 프로토타이핑 3D 인터페이스

주요 기능

  • 초보자를 위한 사용하기 쉬운 API
  • 다수의 플랫폼을 지원합니다
  • 내장형 3D 모델 렌더링
  • 가볍고 빠름
  • 크로스 플랫폼 호환성

적합한 대상

  • 3D 시각화가 필요한 과학자
  • 3D에 처음 도전하는 Flutter 개발자
  • 인터랙티브 콘텐츠를 만드는 교육자
  • 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

소스 저장소

이 패키지를 사용하는 프로젝트