Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
CityDoctor
CityDoctor2
Commits
120466a0
Commit
120466a0
authored
May 05, 2025
by
Riegel
Browse files
Refactor: Simplify PhongMaterial calculation
parent
5d718df1
Pipeline
#11088
passed with stage
in 1 minute and 24 seconds
Changes
7
Pipelines
2
Hide whitespace changes
Inline
Side-by-side
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/BoundarySurface.java
View file @
120466a0
...
...
@@ -92,7 +92,13 @@ public class BoundarySurface extends CityObject {
return
switch
(
type
)
{
case
ROOF
->
Color
.
RED
;
case
GROUND
->
Color
.
KHAKI
;
default
->
Color
.
WHITE
;
default
->
{
if
(
parent
!=
null
)
{
yield
parent
.
getRenderColor
();
}
else
{
yield
Color
.
WHITE
;
}
}
};
}
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/ConcretePolygon.java
View file @
120466a0
...
...
@@ -23,6 +23,7 @@ import de.hft.stuttgart.citydoctor2.check.Checkable;
import
de.hft.stuttgart.citydoctor2.math.Vector3d
;
import
de.hft.stuttgart.citydoctor2.tesselation.JoglTesselator
;
import
de.hft.stuttgart.citydoctor2.tesselation.TesselatedPolygon
;
import
javafx.scene.paint.Color
;
import
java.io.Serial
;
import
java.util.ArrayList
;
...
...
@@ -412,6 +413,11 @@ public class ConcretePolygon extends Polygon {
}
return
area
;
}
@Override
public
Color
getRenderColor
()
{
return
parent
.
getRenderColor
();
}
...
...
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/Geometry.java
View file @
120466a0
...
...
@@ -25,6 +25,7 @@ import de.hft.stuttgart.citydoctor2.math.Vector3d;
import
de.hft.stuttgart.citydoctor2.tesselation.TesselatedPolygon
;
import
de.hft.stuttgart.citydoctor2.utils.BoundingBoxCalculator
;
import
de.hft.stuttgart.citydoctor2.utils.SerializablePair
;
import
javafx.scene.paint.Color
;
import
java.io.Serial
;
import
java.util.*
;
...
...
@@ -342,4 +343,8 @@ public class Geometry extends GmlElement {
edges
=
null
;
edgeMap
=
null
;
}
public
Color
getRenderColor
()
{
return
parent
.
getRenderColor
();
}
}
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/LinkedPolygon.java
View file @
120466a0
...
...
@@ -23,6 +23,7 @@ import de.hft.stuttgart.citydoctor2.check.CheckId;
import
de.hft.stuttgart.citydoctor2.check.CheckResult
;
import
de.hft.stuttgart.citydoctor2.math.Vector3d
;
import
de.hft.stuttgart.citydoctor2.tesselation.TesselatedPolygon
;
import
javafx.scene.paint.Color
;
import
java.io.Serial
;
import
java.util.List
;
...
...
@@ -259,4 +260,9 @@ public class LinkedPolygon extends Polygon {
return
poly
.
getArea
();
}
@Override
public
Color
getRenderColor
()
{
return
poly
.
getRenderColor
();
}
}
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/Opening.java
View file @
120466a0
...
...
@@ -21,6 +21,7 @@ package de.hft.stuttgart.citydoctor2.datastructure;
import
de.hft.stuttgart.citydoctor2.check.Check
;
import
de.hft.stuttgart.citydoctor2.parser.ParserConfiguration
;
import
de.hft.stuttgart.citydoctor2.utils.CityGmlUtils
;
import
javafx.scene.paint.Color
;
import
org.citygml4j.core.model.construction.AbstractFillingSurface
;
import
org.citygml4j.core.model.core.AbstractCityObject
;
import
org.citygml4j.core.util.geometry.GeometryFactory
;
...
...
@@ -152,4 +153,13 @@ public class Opening extends CityObject {
return
FeatureType
.
OPENING
;
}
@Override
public
Color
getRenderColor
()
{
return
switch
(
type
)
{
case
DOOR
->
Color
.
ORANGE
;
case
WINDOW
->
Color
.
TEAL
;
default
->
Color
.
BLACK
;
};
}
}
CityDoctorParent/CityDoctorModel/src/main/java/de/hft/stuttgart/citydoctor2/datastructure/Polygon.java
View file @
120466a0
...
...
@@ -20,6 +20,7 @@ package de.hft.stuttgart.citydoctor2.datastructure;
import
de.hft.stuttgart.citydoctor2.math.Vector3d
;
import
de.hft.stuttgart.citydoctor2.tesselation.TesselatedPolygon
;
import
javafx.scene.paint.Color
;
import
java.io.Serial
;
import
java.util.List
;
...
...
@@ -86,4 +87,6 @@ public abstract class Polygon extends GmlElement {
public
abstract
double
getArea
();
public
abstract
Color
getRenderColor
();
}
\ No newline at end of file
CityDoctorParent/Extensions/CityDoctorGUI/src/main/java/de/hft/stuttgart/citydoctor2/gui/TriangulatedGeometry.java
View file @
120466a0
...
...
@@ -167,17 +167,10 @@ public class TriangulatedGeometry {
private
PhongMaterial
calculateMaterial
(
Polygon
p
,
Color
baseColor
)
{
Vector3d
normal
=
p
.
calculateNormalNormalized
();
BoundarySurface
bs
=
p
.
getPartOfSurface
();
if
(
bs
!=
null
)
{
if
(
bs
.
getType
()
==
BoundarySurfaceType
.
ROOF
)
{
baseColor
=
Color
.
RED
;
}
else
if
(
bs
.
getType
()
==
BoundarySurfaceType
.
GROUND
)
{
baseColor
=
Color
.
KHAKI
;
}
if
(
p
.
getRenderColor
()
!=
null
&&
p
.
getRenderColor
()
!=
Color
.
WHITE
)
{
baseColor
=
p
.
getRenderColor
();
}
baseColor
=
determineColorDependingOnParentType
(
p
,
baseColor
);
double
cos
=
normal
.
dot
(
AXIS
);
double
acos
=
Math
.
acos
(
cos
);
// normalize to range [0.3, 0.9]
...
...
@@ -188,37 +181,6 @@ public class TriangulatedGeometry {
return
new
PhongMaterial
(
derivedColor
);
}
private
Color
determineColorDependingOnParentType
(
Polygon
p
,
Color
baseColor
)
{
p
=
p
.
getOriginal
();
Polygon
p1
=
p
.
getLinkedFromPolygon
();
Color
parentColor
=
null
;
if
(
p1
!=
null
)
{
parentColor
=
p1
.
getParent
().
getParent
().
getRenderColor
();
}
else
{
parentColor
=
baseColor
=
p
.
getParent
().
getParent
().
getRenderColor
();
}
if
(
parentColor
!=
null
&&
parentColor
!=
Color
.
WHITE
)
{
baseColor
=
parentColor
;
}
baseColor
=
changeBaseColorIfPolygonHasOpeningParent
(
p1
,
baseColor
);
baseColor
=
changeBaseColorIfPolygonHasOpeningParent
(
p
,
baseColor
);
return
baseColor
;
}
private
Color
changeBaseColorIfPolygonHasOpeningParent
(
Polygon
p
,
Color
baseColor
)
{
if
(
p
==
null
)
{
return
baseColor
;
}
CityObject
parent
=
p
.
getParent
().
getParent
();
if
(
parent
instanceof
Opening
op
)
{
if
(
op
.
getType
()
==
OpeningType
.
DOOR
)
{
baseColor
=
Color
.
ORANGE
;
}
else
{
baseColor
=
Color
.
TEAL
;
}
}
return
baseColor
;
}
private
Vector3d
findCenter
(
List
<
Vector3d
>
points
)
{
double
xMin
=
Double
.
MAX_VALUE
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment