package parameter;
import javax.swing.event.EventListenerList;
import util.Log;
import util.Log.LogType;
import com.jme3.bounding.BoundingBox;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Quaternion;
import com.jme3.math.Vector3f;
import com.jme3.scene.Mesh;
import cern.colt.matrix.impl.DenseDoubleMatrix1D;
public class RenderParameter implements Parameter {
public final static int CAMERA_DISTANCE = 0;
public final static int OBJECT_SCALE = 1;
public final static int OBJECT_POSITION_X = 2;
public final static int OBJECT_POSITION_Y = 3;
public final static int OBJECT_ROTATION_X = 4;
public final static int OBJECT_ROTATION_Y = 5;
public final static int OBJECT_ROTATION_Z = 6;
public final static int AMBIENT_COLOR_R = 7;
public final static int AMBIENT_COLOR_G = 8;
public final static int AMBIENT_COLOR_B = 9;
public final static int DIRECTED_LIGHT_COLOR_R = 10;
public final static int DIRECTED_LIGHT_COLOR_G = 11;
public final static int DIRECTED_LIGHT_COLOR_B = 12;
public final static int DIRECTED_LIGHT_DIRECTION_X = 13;
public final static int DIRECTED_LIGHT_DIRECTION_Y = 14;
public final static int DIRECTED_LIGHT_DIRECTION_Z = 15;
public final static int COLOR_OFFSET_R = 16;
public final static int COLOR_OFFSET_G = 17;
public final static int COLOR_OFFSET_B = 18;
public final static int COLOR_GAIN_R = 19;
public final static int COLOR_GAIN_G = 20;
public final static int COLOR_GAIN_B = 21;
public final static int OBJECT_SHININESS = 22;
public final static int LAST_PARAM = OBJECT_SHININESS;
public final static int PARAMS_SIZE = LAST_PARAM +1;
private final static float EPSILON = 0.0001f;
private DenseDoubleMatrix1D matrix = new DenseDoubleMatrix1D(PARAMS_SIZE);
private final EventListenerList listeners = new EventListenerList();
public RenderParameter() {
setCameraDistance(3.0);
setObjectScale(1.0);
setObjectPosition(new Vector3f(EPSILON, EPSILON, EPSILON));
setObjectRotation(Quaternion.DIRECTION_Z);
setAmbientLightColor(ColorRGBA.White);
setDirectedLightColor(ColorRGBA.White);
setDirectedLightDirection(new Vector3f(-0.5f,-1,-1));
setColorsOffsets(new ColorRGBA(EPSILON, EPSILON, EPSILON, EPSILON));
setColorsGains(new ColorRGBA(1f, 1f, 1f, 1f));
setObjectShininess(80f);
}
public RenderParameter(RenderParameter param) {
this.matrix = new DenseDoubleMatrix1D(PARAMS_SIZE);
this.matrix.assign(param.matrix);
}
public DenseDoubleMatrix1D getMatrix() {
return matrix;
}
public void setMatrix(DenseDoubleMatrix1D matrix) {
this.matrix = matrix;
fireParamChanged();
}
@Override
public double get(int index) {
return matrix.getQuick(index);
}
@Override
public void set(int index, double value) {
matrix.setQuick(index, value);
fireParamChanged();
}
@Override
public String toString() {
String result = "Render Parameters: \n";
result += "Camera distance : " + getCameraDistance() + "\n";
result += "Object scale : " + getObjectScale() + "\n";
result += "Object position : " + getObjectPosition() + "\n";
result += "Object rotation : (" + matrix.getQuick(OBJECT_ROTATION_X)
+ ", " + matrix.getQuick(OBJECT_ROTATION_Y) + ", " + matrix.getQuick(OBJECT_ROTATION_Z) + ")\n";
result += "Ambient color : " + getAmbientLightColor() + "\n";
result += "Directed light color : " + getDirectedLightColor() + "\n";
result += "Directed light direction : " + getDirectedLightDirection() + "\n";
result += "Color offset : " + getColorsOffsets() + "\n";
result += "Color gain : " + getColorsGains() + "\n";
result += "Object shininess : " + getObjectShininess() + "\n";
return result;
}
public String getDataString() {
String result = "";
for(int x = 0; x < matrix.size() -1; x++)
result += String.format("%f\t", matrix.getQuick(x));
return result + String.format("%f", matrix.getQuick(matrix.size()-1));
}
public void copy(RenderParameter params) {
matrix.assign(params.matrix);
}
public static double getStandartDeviation(int index) {
switch (index) {
case OBJECT_SCALE: return 1.0/300.0;
case CAMERA_DISTANCE: return 1;
case OBJECT_SHININESS: return 0.2;
case OBJECT_POSITION_X:
case OBJECT_POSITION_Y: return 0.05;
case DIRECTED_LIGHT_DIRECTION_X:
case DIRECTED_LIGHT_DIRECTION_Y:
case DIRECTED_LIGHT_DIRECTION_Z: return 0.1;
default: return 1.0;
}
}
public float getCameraDistance() {
return (float) matrix.getQuick(CAMERA_DISTANCE);
}
public void setCameraDistance(double cameraDistance) {
matrix.setQuick(CAMERA_DISTANCE, cameraDistance);
fireParamChanged();
}
public float getObjectScale() {
return (float) matrix.getQuick(OBJECT_SCALE);
}
public void setObjectScale(double objectScale) {
matrix.setQuick(OBJECT_SCALE, objectScale);
fireParamChanged();
}
public void initObjectScale(Mesh mesh) {
BoundingBox bb = (BoundingBox) mesh.getBound();
Vector3f extent = bb.getExtent(null);
if(extent.length() > 1.0) {
float scale = 1f / extent.length();
Log.info(LogType.GUI, "Auto-scaling: "+ scale);
setObjectScale(scale);
return;
}
Log.info(LogType.GUI, "Not auto-scaling");
fireParamChanged();
}
public Vector3f getObjectPosition() {
return new Vector3f((float) matrix.getQuick(OBJECT_POSITION_X),
(float) matrix.getQuick(OBJECT_POSITION_Y),
0.0f);
}
public void setObjectPosition(Vector3f objectPosition) {
matrix.setQuick(OBJECT_POSITION_X, objectPosition.x);
matrix.setQuick(OBJECT_POSITION_Y, objectPosition.y);
fireParamChanged();
}
public Quaternion getObjectRotation() {
float[] angles = new float[] { (float) matrix.getQuick(OBJECT_ROTATION_X),
(float) matrix.getQuick(OBJECT_ROTATION_Y),
(float) matrix.getQuick(OBJECT_ROTATION_Z) };
return new Quaternion().fromAngles(angles);
}
public void setObjectRotation(Quaternion objectRotation) {
float[] angles = new float[3];
objectRotation.toAngles(angles);
matrix.setQuick(OBJECT_ROTATION_X, angles[0]);
matrix.setQuick(OBJECT_ROTATION_Y, angles[1]);
matrix.setQuick(OBJECT_ROTATION_Z, angles[2]);
fireParamChanged();
}
public ColorRGBA getAmbientLightColor() {
ColorRGBA c = new ColorRGBA();
c.r = (float) matrix.getQuick(AMBIENT_COLOR_R);
c.g = (float) matrix.getQuick(AMBIENT_COLOR_G);
c.b = (float) matrix.getQuick(AMBIENT_COLOR_B);
c.a = 1.0f;
return c;
}
public void setAmbientLightColor(ColorRGBA ambientLightColor) {
matrix.setQuick(AMBIENT_COLOR_R, ambientLightColor.r);
matrix.setQuick(AMBIENT_COLOR_G, ambientLightColor.g);
matrix.setQuick(AMBIENT_COLOR_B, ambientLightColor.b);
fireParamChanged();
}
public ColorRGBA getDirectedLightColor() {
ColorRGBA c = new ColorRGBA();
c.r = (float) matrix.getQuick(DIRECTED_LIGHT_COLOR_R);
c.g = (float) matrix.getQuick(DIRECTED_LIGHT_COLOR_G);
c.b = (float) matrix.getQuick(DIRECTED_LIGHT_COLOR_B);
c.a = 1.0f;
return c;
}
public void setDirectedLightColor(ColorRGBA directedLightColor) {
matrix.setQuick(DIRECTED_LIGHT_COLOR_R, directedLightColor.r);
matrix.setQuick(DIRECTED_LIGHT_COLOR_G, directedLightColor.g);
matrix.setQuick(DIRECTED_LIGHT_COLOR_B, directedLightColor.b);
fireParamChanged();
}
public Vector3f getDirectedLightDirection() {
return new Vector3f((float) matrix.getQuick(DIRECTED_LIGHT_DIRECTION_X),
(float) matrix.getQuick(DIRECTED_LIGHT_DIRECTION_Y),
(float) matrix.getQuick(DIRECTED_LIGHT_DIRECTION_Z));
}
public void setDirectedLightDirection(Vector3f directedLightDirection) {
matrix.setQuick(DIRECTED_LIGHT_DIRECTION_X, directedLightDirection.x);
matrix.setQuick(DIRECTED_LIGHT_DIRECTION_Y, directedLightDirection.y);
matrix.setQuick(DIRECTED_LIGHT_DIRECTION_Z, directedLightDirection.z);
fireParamChanged();
}
public ColorRGBA getColorsOffsets() {
ColorRGBA c = new ColorRGBA();
c.r = (float) matrix.getQuick(COLOR_OFFSET_R);
c.g = (float) matrix.getQuick(COLOR_
没有合适的资源?快使用搜索试试~ 我知道了~
3D可变形模型软件(httpswww.cs.cmu.edu~efroscoursesAP06PapersBlanz-si.zip
共115个文件
java:47个
html:44个
jar:13个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 63 浏览量
2023-04-30
23:38:14
上传
评论
收藏 5.66MB ZIP 举报
温馨提示
3D可变形模型软件(httpswww.cs.cmu.edu~efroscoursesAP06PapersBlanz-si.zip
资源推荐
资源详情
资源评论
收起资源包目录
3D可变形模型软件(httpswww.cs.cmu.edu~efroscoursesAP06PapersBlanz-si.zip (115个子文件)
.classpath 2KB
stylesheet.css 1KB
ColorRescale15.frag 287B
ColorRescale.frag 236B
inherit.gif 57B
.gitignore 46B
Element.html 33KB
index-all.html 28KB
NormalizingPlyReader.html 24KB
ElementType.html 22KB
PlyReaderFile.html 22KB
DataType.html 20KB
TextureMode.html 19KB
Axis.html 19KB
NormalMode.html 19KB
TesselationMode.html 18KB
Property.html 17KB
ListProperty.html 17KB
PlyReader.html 13KB
ElementType.html 12KB
ElementReader.html 12KB
PlyReader.html 12KB
TesselationMode.html 12KB
TextureMode.html 11KB
NormalMode.html 11KB
DataType.html 11KB
Property.html 11KB
Axis.html 10KB
help-doc.html 10KB
ElementReader.html 10KB
package-summary.html 10KB
package-use.html 9KB
Element.html 9KB
overview-tree.html 9KB
package-summary.html 8KB
package-tree.html 8KB
package-use.html 8KB
package-tree.html 8KB
NormalizingPlyReader.html 6KB
PlyReaderFile.html 6KB
ListProperty.html 6KB
overview-summary.html 6KB
constant-values.html 5KB
deprecated-list.html 5KB
allclasses-frame.html 2KB
package-frame.html 2KB
allclasses-noframe.html 2KB
package-frame.html 2KB
index.html 1KB
overview-frame.html 1KB
ColorRescale.j3md 666B
jME3-lwjgl-natives.jar 1.94MB
jME3-core.jar 1.02MB
lwjgl.jar 912KB
colt.jar 568KB
jME3-effects.jar 440KB
concurrent.jar 219KB
jME3-desktop.jar 214KB
jinput.jar 210KB
jME3-terrain.jar 149KB
jME3-lwjgl.jar 95KB
jME3-plugins.jar 64KB
jply-0.2.0.jar 54KB
jmatio.jar 39KB
RenderParameter.java 11KB
PCA.java 7KB
ModelParameter.java 6KB
MorphableModelLoader.java 4KB
Model.java 4KB
FittingStrategy.java 4KB
MorphableModel.java 4KB
FittingRater.java 3KB
ErrorTracer.java 3KB
Editor.java 3KB
FittingScene.java 3KB
PlyImporter.java 3KB
FittingRenderer.java 3KB
CompleteParameterIterator.java 2KB
ModelParameterIterator.java 2KB
DisplayApp.java 2KB
AttributeUI.java 2KB
Log.java 2KB
PlyExporter.java 2KB
ParamSlider.java 2KB
OfflineRenderApp.java 2KB
NormalGenerator.java 2KB
ColorRescaleFilter.java 2KB
Simple3DGUI.java 2KB
AttributeButtons.java 2KB
CompleteParameter.java 1KB
PCATest.java 1KB
RenderParameterIterator.java 1KB
ObjExporter.java 1KB
MorphableModelBuilder.java 1KB
RandomMorphingApp.java 1KB
DisplayModelApp.java 878B
FittingApp.java 844B
Importer.java 749B
ErrorTracerApp.java 715B
DisplayEigenFace.java 697B
共 115 条
- 1
- 2
资源评论
快撑死的鱼
- 粉丝: 1w+
- 资源: 9156
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功