From 35ee4fbb99ec93667135c53fece708ca070975a5 Mon Sep 17 00:00:00 2001 From: Vadim Lopatin Date: Tue, 5 Apr 2016 11:55:33 +0300 Subject: [PATCH] #183 Scene3d: fix OBJ import --- examples/d3d/src/d3d.d | 8 ++++---- src/dlangui/graphics/scene/objimport.d | 14 ++++++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/examples/d3d/src/d3d.d b/examples/d3d/src/d3d.d index 3b991942..3bf5c1a2 100644 --- a/examples/d3d/src/d3d.d +++ b/examples/d3d/src/d3d.d @@ -121,8 +121,8 @@ class UiWidget : VerticalLayout, CellVisitor { dirLightNode.translateX(2); dirLightNode.translateY(3); dirLightNode.translateZ(3); - dirLightNode.light = Light.createPoint(vec3(1, 0.5, 0.5), 15); //Light.createDirectional(vec3(1, 0.5, 0.5)); - //dirLightNode.light = Light.createDirectional(vec3(11, 10.5, 10.5)); + //dirLightNode.light = Light.createPoint(vec3(1, 0.5, 0.5), 15); //Light.createDirectional(vec3(1, 0.5, 0.5)); + dirLightNode.light = Light.createDirectional(vec3(1, 0.5, 0.8)); dirLightNode.light.enabled = true; _scene.addChild(dirLightNode); @@ -364,8 +364,8 @@ class UiWidget : VerticalLayout, CellVisitor { //projectionViewModelMatrix.setIdentity(); //Log.d("matrix uniform: ", projectionViewModelMatrix.m); - checkgl!glEnable(GL_CULL_FACE); - //checkgl!glDisable(GL_CULL_FACE); + //checkgl!glEnable(GL_CULL_FACE); + checkgl!glDisable(GL_CULL_FACE); checkgl!glEnable(GL_DEPTH_TEST); checkgl!glCullFace(GL_BACK); diff --git a/src/dlangui/graphics/scene/objimport.d b/src/dlangui/graphics/scene/objimport.d index b019e59d..03fa7748 100644 --- a/src/dlangui/graphics/scene/objimport.d +++ b/src/dlangui/graphics/scene/objimport.d @@ -21,13 +21,19 @@ struct ObjModelImport { protected float[] parseFloatList(Token[] tokens, int maxItems = 3, float padding = 0) { int i = 0; + int sgn = 1; foreach(t; tokens) { if (i >= maxItems) break; - if (t.type == TokenType.floating) - _buf[i++] = cast(float)t.floatvalue; - else if (t.type == TokenType.integer) - _buf[i++] = cast(float)t.intvalue; + if (t.type == TokenType.floating) { + _buf[i++] = cast(float)(t.floatvalue * sgn); + sgn = 1; + } else if (t.type == TokenType.integer) { + _buf[i++] = cast(float)(t.intvalue * sgn); + sgn = 1; + } else if (t.type == TokenType.minus) { + sgn = -1; + } } while(i < maxItems) _buf[i++] = padding;