Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
152 changes: 152 additions & 0 deletions .dart_tool/package_config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
{
"configVersion": 2,
"packages": [
{
"name": "async",
"rootUri": "file:///Users/mac/.pub-cache/hosted/pub.dev/async-2.11.0",
"packageUri": "lib/",
"languageVersion": "2.18"
},
{
"name": "boolean_selector",
"rootUri": "file:///Users/mac/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1",
"packageUri": "lib/",
"languageVersion": "2.17"
},
{
"name": "characters",
"rootUri": "file:///Users/mac/.pub-cache/hosted/pub.dev/characters-1.3.0",
"packageUri": "lib/",
"languageVersion": "2.12"
},
{
"name": "clock",
"rootUri": "file:///Users/mac/.pub-cache/hosted/pub.dev/clock-1.1.1",
"packageUri": "lib/",
"languageVersion": "2.12"
},
{
"name": "collection",
"rootUri": "file:///Users/mac/.pub-cache/hosted/pub.dev/collection-1.17.1",
"packageUri": "lib/",
"languageVersion": "2.18"
},
{
"name": "fake_async",
"rootUri": "file:///Users/mac/.pub-cache/hosted/pub.dev/fake_async-1.3.1",
"packageUri": "lib/",
"languageVersion": "2.12"
},
{
"name": "flutter",
"rootUri": "file:///Users/mac/flutterdev/flutter/packages/flutter",
"packageUri": "lib/",
"languageVersion": "3.0"
},
{
"name": "flutter_lints",
"rootUri": "file:///Users/mac/.pub-cache/hosted/pub.dev/flutter_lints-1.0.4",
"packageUri": "lib/",
"languageVersion": "2.12"
},
{
"name": "flutter_test",
"rootUri": "file:///Users/mac/flutterdev/flutter/packages/flutter_test",
"packageUri": "lib/",
"languageVersion": "3.0"
},
{
"name": "js",
"rootUri": "file:///Users/mac/.pub-cache/hosted/pub.dev/js-0.6.7",
"packageUri": "lib/",
"languageVersion": "2.19"
},
{
"name": "lints",
"rootUri": "file:///Users/mac/.pub-cache/hosted/pub.dev/lints-1.0.1",
"packageUri": "lib/",
"languageVersion": "2.12"
},
{
"name": "matcher",
"rootUri": "file:///Users/mac/.pub-cache/hosted/pub.dev/matcher-0.12.15",
"packageUri": "lib/",
"languageVersion": "2.18"
},
{
"name": "material_color_utilities",
"rootUri": "file:///Users/mac/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0",
"packageUri": "lib/",
"languageVersion": "2.13"
},
{
"name": "meta",
"rootUri": "file:///Users/mac/.pub-cache/hosted/pub.dev/meta-1.9.1",
"packageUri": "lib/",
"languageVersion": "2.12"
},
{
"name": "path",
"rootUri": "file:///Users/mac/.pub-cache/hosted/pub.dev/path-1.8.3",
"packageUri": "lib/",
"languageVersion": "2.12"
},
{
"name": "sky_engine",
"rootUri": "file:///Users/mac/flutterdev/flutter/bin/cache/pkg/sky_engine",
"packageUri": "lib/",
"languageVersion": "3.0"
},
{
"name": "source_span",
"rootUri": "file:///Users/mac/.pub-cache/hosted/pub.dev/source_span-1.9.1",
"packageUri": "lib/",
"languageVersion": "2.14"
},
{
"name": "stack_trace",
"rootUri": "file:///Users/mac/.pub-cache/hosted/pub.dev/stack_trace-1.11.0",
"packageUri": "lib/",
"languageVersion": "2.18"
},
{
"name": "stream_channel",
"rootUri": "file:///Users/mac/.pub-cache/hosted/pub.dev/stream_channel-2.1.1",
"packageUri": "lib/",
"languageVersion": "2.14"
},
{
"name": "string_scanner",
"rootUri": "file:///Users/mac/.pub-cache/hosted/pub.dev/string_scanner-1.2.0",
"packageUri": "lib/",
"languageVersion": "2.18"
},
{
"name": "term_glyph",
"rootUri": "file:///Users/mac/.pub-cache/hosted/pub.dev/term_glyph-1.2.1",
"packageUri": "lib/",
"languageVersion": "2.12"
},
{
"name": "test_api",
"rootUri": "file:///Users/mac/.pub-cache/hosted/pub.dev/test_api-0.5.1",
"packageUri": "lib/",
"languageVersion": "2.18"
},
{
"name": "vector_math",
"rootUri": "file:///Users/mac/.pub-cache/hosted/pub.dev/vector_math-2.1.4",
"packageUri": "lib/",
"languageVersion": "2.14"
},
{
"name": "flutter_3d_obj",
"rootUri": "../",
"packageUri": "lib/",
"languageVersion": "2.14"
}
],
"generated": "2023-09-04T16:17:30.290038Z",
"generator": "pub",
"generatorVersion": "3.0.6"
}
64 changes: 32 additions & 32 deletions lib/flutter_3d_obj.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,40 +2,38 @@ library flutter_3d_obj;

import 'dart:io';
import 'dart:math' as Math;
import 'dart:ui';

import 'package:flutter/material.dart';
import 'package:flutter/services.dart' show rootBundle;
import 'package:flutter/widgets.dart';
import 'package:meta/meta.dart';
import 'package:vector_math/vector_math.dart' show Vector3;
import 'package:vector_math/vector_math.dart' as V;

class Object3D extends StatefulWidget {
Object3D({
@required this.size,
@required this.path,
@required this.asset,
required this.size,
required this.path,
required this.asset,
this.angleX,
this.angleY,
this.angleZ,
this.zoom = 100.0,
});
Key? key,
}): super(key: key);

final Size size;
final bool asset;
final String path;
final double zoom;
final double angleX;
final double angleY;
final double angleZ;
final double? angleX;
final double? angleY;
final double? angleZ;

@override
_Object3DState createState() => new _Object3DState();
State<Object3D> createState() => _Object3DState();
}

class _Object3DState extends State<Object3D> {
_Object3DState();

void initState() {
if (widget.asset == true) {
Expand All @@ -58,7 +56,7 @@ class _Object3DState extends State<Object3D> {
}


bool useInternal;
late bool useInternal;

double angleX = 15.0;
double angleY = 45.0;
Expand All @@ -67,10 +65,10 @@ class _Object3DState extends State<Object3D> {
double _previousX = 0.0;
double _previousY = 0.0;

double zoom;
late double zoom;
String object = "V 1 1 1 1";

File file;
late File file;

void _updateCube(DragUpdateDetails data) {
if (angleY > 360.0) {
Expand Down Expand Up @@ -116,8 +114,8 @@ class _Object3DState extends State<Object3D> {
Widget build(BuildContext context) {
return new GestureDetector(
child: new CustomPaint(
painter: new _ObjectPainter(widget.size, object, useInternal ? angleX : widget.angleX,
useInternal ? angleY : widget.angleY, useInternal ? angleZ : widget.angleZ, widget.zoom),
painter: new _ObjectPainter(widget.size, object, useInternal ? angleX : widget.angleX!,
useInternal ? angleY : widget.angleY!, useInternal ? angleZ : widget.angleZ!, widget.zoom),
size: widget.size,
),
onHorizontalDragUpdate: _updateY,
Expand All @@ -135,29 +133,31 @@ class _ObjectPainter extends CustomPainter {

final double zero = 0.0;

final String object;
late final String object;

double _viewPortX = 0.0, _viewPortY = 0.0;

List<Vector3> vertices;
List<dynamic> faces;
V.Matrix4 T;
Vector3 camera;
Vector3 light;
late List<Vector3> vertices;
late List<dynamic> faces;
late V.Matrix4 T;
late Vector3 camera;
late Vector3 light;

double angleX;
double angleY;
double angleZ;
late double angleX;
late double angleY;
late double angleZ;

Color color;
late Color color;

Size size;
late Size size;

// _ObjectPainter(Size size, String object, double d, double e, double f, double zoom);

_ObjectPainter(this.size, this.object, this.angleX, this.angleY, this.angleZ, this._zoomFactor) {
_ObjectPainter(Size size,String object, double angleX,double angleY,double angleZ, _zoomFactor) {
_translation *= _zoomFactor;
camera = new Vector3(0.0, 0.0, 0.0);
light = new Vector3(0.0, 0.0, 100.0);
color = new Color.fromARGB(255, 255, 255, 255);
camera = Vector3(0.0, 0.0, 0.0);
light = Vector3(0.0, 0.0, 100.0);
color = Color.fromARGB(255, 255, 255, 255);
_viewPortX = (size.width / 2).toDouble();
_viewPortY = (size.height / 2).toDouble();
}
Expand Down Expand Up @@ -317,7 +317,7 @@ class _ObjectPainter extends CustomPainter {
verticesToDraw[i] = _calcDefaultVertex(verticesToDraw[i]);
}

final List<Map> avgOfZ = List();
final List<Map> avgOfZ = [];
for (int i = 0; i < faces.length; i++) {
List face = faces[i];
double z = 0.0;
Expand Down
13 changes: 7 additions & 6 deletions pubspec.yaml
Original file line number Diff line number Diff line change
@@ -1,19 +1,20 @@
name: flutter_3d_obj
description: A new flutter package to render wavefront obj files into a canvas.
version: 0.0.6
author: Hemanth Raj <[email protected]>
version: 0.0.7
homepage: https://github.com/hemanthrajv/flutter_3d_obj

flutter:

environment:
sdk: ">=2.0.0-dev.28.0 <3.0.0"
flutter: ">=0.2.4 <2.0.0"
sdk: '>=2.14.0 <4.0.0'


dependencies:
meta: "^1.1.1"
vector_math: "^2.0.5"
vector_math: "^2.1.4"
flutter:
sdk: flutter

dev_dependencies:
flutter_test:
sdk: flutter
flutter_lints: ^1.0.0