Re: Is Sunflow limited in Sweet Home 3D?
Code: Select all
g Plane_1_1_1
usemtl None
v 0.0 100.0 -0.05
v 100.0 100.0 -0.05
v 100.0 250.0 -0.05
v 0.0 250.0 -0.05
vn 0.0 0.0 1.0
f 1//1 2//1 3//1
f 1//1 3//1 4//1Code: Select all
id#1=Meshlight#Vertical
name#1=Vertical shape sh3d
category#1=Light sources 2
icon#1=/Vertical shape sh3d.png
model#1=/vertical_shape_sh3d.obj
width#1=100
depth#1=0.1
height#1=150
movable#1=true
doorOrWindow#1=false
## Mandatory for light source
lightSourceX#1=50
lightSourceY#1=0
lightSourceZ#1=75
lightSourceColor#1=#919189
## Optional for light source
##lightSourceDiameter#1=
elevation#1=100
modelSize#1=325
creator#1=Enko NyitoCode: Select all
<light catalogId='Meshlight#Vertical' name='Vertical shape sh3d' creator='Enko Nyito' model='1' icon='0' x='50.0' y='-0.05' elevation='100.0' width='100.0' depth='0.1' height='150.0' modelSize='325' power='0.1'>
<lightSource x='0.5' y='0.0' z='0.5' color='00919189'/>
</light>Code: Select all
...
int samples = 4;
int np = 4;
int nt = 2;
power = power / 100;
this.sunflow.parameter("radiance", null,
power * (lightColor >> 16) * (this.homeLightColor >> 16),
power * ((lightColor >> 8) & 0xFF) * ((this.homeLightColor >> 8) & 0xFF),
power * (lightColor & 0xFF) * (this.homeLightColor & 0xFF));
this.sunflow.parameter("samples", samples);
this.sunflow.parameter("points", "point", "vertex", parseFloatArray(np * 3, light, lightSourceLocation));
this.sunflow.parameter("triangles", parseIntArray(nt * 3));
this.sunflow.light(UUID.randomUUID().toString(), "triangle_mesh");
...
private int[] parseIntArray(int size) {
int[] data = {0, 1, 2,
0, 2, 3};
return data;
}
private float[] parseFloatArray(int size, HomeLight light, Point3f lightSourceLocation) {
float[] data = {lightSourceLocation.getX() - light.getWidthInPlan()/2, lightSourceLocation.getY() - light.getHeightInPlan()/2, lightSourceLocation.getZ() - light.getDepthInPlan()/2,
lightSourceLocation.getX() + light.getWidthInPlan()/2, lightSourceLocation.getY() - light.getHeightInPlan()/2, lightSourceLocation.getZ() - light.getDepthInPlan()/2,
lightSourceLocation.getX() + light.getWidthInPlan()/2, lightSourceLocation.getY() + light.getHeightInPlan()/2, lightSourceLocation.getZ() + light.getDepthInPlan()/2,
lightSourceLocation.getX() - light.getWidthInPlan()/2, lightSourceLocation.getY() + light.getHeightInPlan()/2, lightSourceLocation.getZ() + light.getDepthInPlan()/2};
return data;
}Code: Select all
public static class TriangleMeshLightWithNoRepresentation extends TriangleMeshLight {
public Instance createInstance() {
return null;
}
}