Skip to content
Snippets Groups Projects
Commit 37f04062 authored by Radek Ošlejšek's avatar Radek Ošlejšek
Browse files

Merge branch '61-visualize-the-superimposition-registration-of-triangle-meshes' into 'master'

Revert "Added temporary simple interface to check face with heatmap"

Closes #61

See merge request grp-fidentis/analyst2!77
parents a16eaebe 117082be
No related branches found
No related tags found
No related merge requests found
<?xml version="1.0" encoding="UTF-8" ?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<Form version="1.4" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
<Properties>
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[1200, 500]"/>
</Property>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[1250, 600]"/>
</Property>
</Properties>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="jSplitPane1" max="-2" attributes="0"/>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Component id="jPanel1" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Component id="jPanel1" pref="576" max="32767" attributes="0"/>
</Group>
<Component id="jSplitPane1" alignment="0" pref="589" max="32767" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Container class="javax.swing.JPanel" name="jPanel1">
<Properties>
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[100, 500]"/>
</Property>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[200, 600]"/>
</Property>
</Properties>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
<Component id="jButton1" min="-2" max="-2" attributes="0"/>
<Component id="primaryColorPanel" min="-2" max="-2" attributes="0"/>
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
<Component id="jLabel3" min="-2" max="-2" attributes="0"/>
<Component id="secondaryColorPanel" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace min="0" pref="88" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<Component id="jLabel1" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="jButton1" min="-2" max="-2" attributes="0"/>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Component id="jLabel2" min="-2" max="-2" attributes="0"/>
<EmptySpace min="-2" pref="5" max="-2" attributes="0"/>
<Component id="primaryColorPanel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="jLabel3" min="-2" max="-2" attributes="0"/>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Component id="secondaryColorPanel" min="-2" max="-2" attributes="0"/>
<EmptySpace min="0" pref="0" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JLabel" name="jLabel1">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="cz/fidentis/analyst/gui/Bundle.properties" key="AligmentTopComponent.jLabel1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
<Component class="javax.swing.JButton" name="jButton1">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="cz/fidentis/analyst/gui/Bundle.properties" key="AligmentTopComponent.jButton1.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jButton1ActionPerformed"/>
</Events>
</Component>
<Container class="javax.swing.JPanel" name="primaryColorPanel">
<Properties>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[100, 40]"/>
</Property>
</Properties>
<Events>
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="primaryColorPanelMouseClicked"/>
</Events>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<EmptySpace min="0" pref="100" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<EmptySpace min="0" pref="40" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
</Layout>
</Container>
<Component class="javax.swing.JLabel" name="jLabel2">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="cz/fidentis/analyst/gui/Bundle.properties" key="AligmentTopComponent.jLabel2.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="jLabel3">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="cz/fidentis/analyst/gui/Bundle.properties" key="AligmentTopComponent.jLabel3.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
<Container class="javax.swing.JPanel" name="secondaryColorPanel">
<Properties>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[100, 40]"/>
</Property>
</Properties>
<Events>
<EventHandler event="mouseClicked" listener="java.awt.event.MouseListener" parameters="java.awt.event.MouseEvent" handler="secondaryColorPanelMouseClicked"/>
</Events>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<EmptySpace min="0" pref="100" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<EmptySpace min="0" pref="40" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
</Layout>
</Container>
</SubComponents>
</Container>
<Container class="javax.swing.JSplitPane" name="jSplitPane1">
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout"/>
<SubComponents>
<Component class="cz.fidentis.analyst.gui.Canvas" name="canvas1">
<Properties>
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[300, 0]"/>
</Property>
<Property name="name" type="java.lang.String" value="" noResource="true"/>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[500, 0]"/>
</Property>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
<JSplitPaneConstraints position="left"/>
</Constraint>
</Constraints>
</Component>
<Component class="cz.fidentis.analyst.gui.Canvas" name="canvas2">
<Properties>
<Property name="minimumSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[300, 0]"/>
</Property>
<Property name="preferredSize" type="java.awt.Dimension" editor="org.netbeans.beaninfo.editors.DimensionEditor">
<Dimension value="[500, 0]"/>
</Property>
</Properties>
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JSplitPaneSupportLayout$JSplitPaneConstraintsDescription">
<JSplitPaneConstraints position="right"/>
</Constraint>
</Constraints>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Form>
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package cz.fidentis.analyst.gui;
import cz.fidentis.analyst.icp.Icp;
import cz.fidentis.analyst.mesh.core.MeshFacet;
import cz.fidentis.analyst.mesh.core.MeshModel;
import java.awt.Color;
import javax.swing.JColorChooser;
import org.netbeans.api.settings.ConvertAsProperties;
import org.openide.awt.ActionID;
import org.openide.awt.ActionReference;
import org.openide.windows.TopComponent;
import org.openide.util.NbBundle.Messages;
/**
*
* @author Richard Pajerský
*
* Window for Registration
*/
@ConvertAsProperties(
dtd = "-//cz.fidentis.analyst.gui//Aligment//EN",
autostore = false
)
@TopComponent.Description(
preferredID = "AligmentTopComponent",
//iconBase="SET/PATH/TO/ICON/HERE",
persistenceType = TopComponent.PERSISTENCE_ALWAYS
)
@TopComponent.Registration(mode = "editor", openAtStartup = false)
@ActionID(category = "Window", id = "cz.fidentis.analyst.gui.AligmentTopComponent")
@ActionReference(path = "Menu/Window" /*, position = 333 */)
@TopComponent.OpenActionRegistration(
displayName = "#CTL_AligmentAction",
preferredID = "AligmentTopComponent"
)
@Messages({
"CTL_AligmentAction=Registration",
"CTL_AligmentTopComponent=Registration",
"HINT_AligmentTopComponent=This is a Registration window"
})
public final class AligmentTopComponent extends TopComponent {
private RegistrationGLEventListener regListener;
public AligmentTopComponent() {
initComponents();
setName(Bundle.CTL_AligmentTopComponent());
setToolTipText(Bundle.HINT_AligmentTopComponent());
regListener = new RegistrationGLEventListener(canvas1, canvas2);
canvas1.setListener(regListener);
Manipulator3D manipulator = new Manipulator3D(regListener);
canvas1.setManipulator(manipulator);
primaryColorPanel.setBackground(regListener.getPrimaryColor());
secondaryColorPanel.setBackground(regListener.getSecondaryColor());
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
jPanel1 = new javax.swing.JPanel();
jLabel1 = new javax.swing.JLabel();
jButton1 = new javax.swing.JButton();
primaryColorPanel = new javax.swing.JPanel();
jLabel2 = new javax.swing.JLabel();
jLabel3 = new javax.swing.JLabel();
secondaryColorPanel = new javax.swing.JPanel();
jSplitPane1 = new javax.swing.JSplitPane();
canvas1 = new cz.fidentis.analyst.gui.Canvas();
canvas2 = new cz.fidentis.analyst.gui.Canvas();
setMinimumSize(new java.awt.Dimension(1200, 500));
setPreferredSize(new java.awt.Dimension(1250, 600));
jPanel1.setMinimumSize(new java.awt.Dimension(100, 500));
jPanel1.setPreferredSize(new java.awt.Dimension(200, 600));
org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(AligmentTopComponent.class, "AligmentTopComponent.jLabel1.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(jButton1, org.openide.util.NbBundle.getMessage(AligmentTopComponent.class, "AligmentTopComponent.jButton1.text")); // NOI18N
jButton1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jButton1ActionPerformed(evt);
}
});
primaryColorPanel.setPreferredSize(new java.awt.Dimension(100, 40));
primaryColorPanel.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
primaryColorPanelMouseClicked(evt);
}
});
javax.swing.GroupLayout primaryColorPanelLayout = new javax.swing.GroupLayout(primaryColorPanel);
primaryColorPanel.setLayout(primaryColorPanelLayout);
primaryColorPanelLayout.setHorizontalGroup(
primaryColorPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 100, Short.MAX_VALUE)
);
primaryColorPanelLayout.setVerticalGroup(
primaryColorPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 40, Short.MAX_VALUE)
);
org.openide.awt.Mnemonics.setLocalizedText(jLabel2, org.openide.util.NbBundle.getMessage(AligmentTopComponent.class, "AligmentTopComponent.jLabel2.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(AligmentTopComponent.class, "AligmentTopComponent.jLabel3.text")); // NOI18N
secondaryColorPanel.setPreferredSize(new java.awt.Dimension(100, 40));
secondaryColorPanel.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
secondaryColorPanelMouseClicked(evt);
}
});
javax.swing.GroupLayout secondaryColorPanelLayout = new javax.swing.GroupLayout(secondaryColorPanel);
secondaryColorPanel.setLayout(secondaryColorPanelLayout);
secondaryColorPanelLayout.setHorizontalGroup(
secondaryColorPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 100, Short.MAX_VALUE)
);
secondaryColorPanelLayout.setVerticalGroup(
secondaryColorPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGap(0, 40, Short.MAX_VALUE)
);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(jButton1)
.addComponent(primaryColorPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2)
.addComponent(jLabel3)
.addComponent(secondaryColorPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(0, 100, Short.MAX_VALUE))
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jButton1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel2)
.addGap(5, 5, 5)
.addComponent(primaryColorPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(secondaryColorPanel, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 0, Short.MAX_VALUE))
);
canvas1.setMinimumSize(new java.awt.Dimension(300, 0));
canvas1.setName(""); // NOI18N
canvas1.setPreferredSize(new java.awt.Dimension(500, 0));
jSplitPane1.setLeftComponent(canvas1);
canvas2.setMinimumSize(new java.awt.Dimension(300, 0));
canvas2.setPreferredSize(new java.awt.Dimension(500, 0));
jSplitPane1.setRightComponent(canvas2);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addContainerGap()
.addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, 578, Short.MAX_VALUE))
.addComponent(jSplitPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 589, Short.MAX_VALUE))
.addContainerGap())
);
}// </editor-fold>//GEN-END:initComponents
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
canvas1.changeModel(canvas2.getLoadedFace().getMeshModel());
}//GEN-LAST:event_jButton1ActionPerformed
private void primaryColorPanelMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_primaryColorPanelMouseClicked
Color current = primaryColorPanel.getBackground();
Color newColor = JColorChooser.showDialog(null, "Choose a color", current);
primaryColorPanel.setBackground(newColor);
regListener.setPrimaryColor(newColor);
}//GEN-LAST:event_primaryColorPanelMouseClicked
private void secondaryColorPanelMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_secondaryColorPanelMouseClicked
Color current = secondaryColorPanel.getBackground();
Color newColor = JColorChooser.showDialog(null, "Choose a color", current);
secondaryColorPanel.setBackground(newColor);
regListener.setSecondaryColor(newColor);
}//GEN-LAST:event_secondaryColorPanelMouseClicked
// Variables declaration - do not modify//GEN-BEGIN:variables
private cz.fidentis.analyst.gui.Canvas canvas1;
private cz.fidentis.analyst.gui.Canvas canvas2;
private javax.swing.JButton jButton1;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JPanel jPanel1;
private javax.swing.JSplitPane jSplitPane1;
private javax.swing.JPanel primaryColorPanel;
private javax.swing.JPanel secondaryColorPanel;
// End of variables declaration//GEN-END:variables
@Override
public void componentOpened() {
// TODO add custom code on component opening
}
@Override
public void componentClosed() {
// TODO add custom code on component closing
}
void writeProperties(java.util.Properties p) {
// better to version settings since initial version as advocated at
// http://wiki.apidesign.org/wiki/PropertyFiles
p.setProperty("version", "1.0");
// TODO store your settings
}
void readProperties(java.util.Properties p) {
String version = p.getProperty("version");
// TODO read your settings according to their version
}
}
...@@ -101,11 +101,32 @@ public class Canvas extends javax.swing.JPanel { ...@@ -101,11 +101,32 @@ public class Canvas extends javax.swing.JPanel {
// enables 3D manipualtion // enables 3D manipualtion
manipulator = new Manipulator3D(listener); manipulator = new Manipulator3D(listener);
setMouseListeners();
this.validate();
}
private void removeMoseListeners() {
glCanvas.removeMouseListener(this.manipulator);
glCanvas.removeMouseMotionListener(this.manipulator);
glCanvas.removeMouseWheelListener(this.manipulator);
}
private void setMouseListeners() {
glCanvas.addMouseListener(manipulator); glCanvas.addMouseListener(manipulator);
glCanvas.addMouseMotionListener(manipulator); glCanvas.addMouseMotionListener(manipulator);
glCanvas.addMouseWheelListener(manipulator); glCanvas.addMouseWheelListener(manipulator);
}
this.validate();
/**
* Sets new mouse listeners for this canvas
*
* @param manipulator new Manipulator3D, probably with different listener
*/
public void setManipulator(Manipulator3D manipulator) {
removeMoseListeners();
this.manipulator = manipulator;
setMouseListeners();
} }
/** /**
......
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package cz.fidentis.analyst.gui;
import com.jogamp.opengl.GL;
import static com.jogamp.opengl.GL.GL_FRONT_AND_BACK;
import static com.jogamp.opengl.GL.GL_VIEWPORT;
import com.jogamp.opengl.GL2;
import static com.jogamp.opengl.GL2GL3.GL_FILL;
import static com.jogamp.opengl.GL2GL3.GL_LINE;
import com.jogamp.opengl.GLAutoDrawable;
import static com.jogamp.opengl.fixedfunc.GLMatrixFunc.GL_MODELVIEW_MATRIX;
import static com.jogamp.opengl.fixedfunc.GLMatrixFunc.GL_PROJECTION_MATRIX;
import cz.fidentis.analyst.icp.Icp;
//import cz.fidentis.analyst.face.HumanFace;
import cz.fidentis.analyst.mesh.core.MeshFacet;
import cz.fidentis.analyst.mesh.core.MeshModel;
import cz.fidentis.analyst.mesh.core.MeshPoint;
import java.awt.Color;
import javax.vecmath.Vector3d;
/**
*
* @author Richard Pajersky
*/
public class RegistrationGLEventListener extends GeneralGLEventListener{
private MeshModel primaryModel = null;
private MeshModel secondaryModel = null;
private Color primaryColor = Color.BLUE;
private Color secondaryColor = Color.RED;
private boolean other = false;
private double leftPt = 0.0f;
private double rightPt = 0.0f;
private double topPt = 0.0f;
private double bottomPt = 0.0f;
private double farPt = 0.0f;
private double nearPt = 0.0f;
private Vector3d center;
public RegistrationGLEventListener(Canvas primary, Canvas secondary) {
super(primary);
}
private void calculateCenter(MeshModel model) {
for (MeshFacet mf : model.getFacets()) {
for (MeshPoint mp : mf.getVertices()) {
Vector3d vert = mp.getPosition();
if (vert.x > rightPt) {
rightPt = vert.x;
}
if (vert.x < leftPt) {
leftPt = vert.x;
}
if (vert.y > topPt) {
topPt = vert.y;
}
if (vert.y < bottomPt) {
bottomPt = vert.y;
}
if (vert.z > nearPt) {
nearPt = vert.z;
}
if (vert.z < farPt) {
farPt = vert.z;
}
}
}
double xc = (rightPt + leftPt) / 2.0f;
double yc = (topPt + bottomPt) / 2.0f;
double zc = (nearPt + farPt) / 2.0f;
center = new Vector3d(xc, yc, zc);
}
@Override
public void setModel(MeshModel model) {
if (primaryModel == null) {
primaryModel = model;
}
else {
Icp icp = new Icp();
icp.setParameters(10, false, 0.05);
MeshFacet facet = icp.getTransformedFacet(primaryModel.getFacets().get(0), model.getFacets().get(0));
MeshModel newModel = new MeshModel();
newModel.addFacet(facet);
secondaryModel = newModel;
}
}
@Override
public void display(GLAutoDrawable glad) {
wireModel = glCanvas.getDrawWired(); // is wire-frame or not
if (whiteBackround) {
gl.glClearColor(0.9f,0.9f,0.9f,0);
} else {
gl.glClearColor(0.25f,0.25f,0.25f,0);
}
// background for GLCanvas
gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
gl.glLoadIdentity();
// sets model to proper position
glu.gluLookAt(xCameraPosition, yCameraPosition, zCameraPosition, xCenter, yCenter, zCenter, xUpPosition, yUpPosition, zUpPosition);
gl.glShadeModel(GL2.GL_SMOOTH);
gl.glGetIntegerv(GL_VIEWPORT, viewport, 0);
gl.glGetFloatv(GL_MODELVIEW_MATRIX, modelViewMatrix, 0);
gl.glGetFloatv(GL_PROJECTION_MATRIX, projectionMatrix, 0);
//if there is any model, draw
if (primaryModel != null) {
if (wireModel) {
gl.glPolygonMode( GL_FRONT_AND_BACK, GL_LINE ); //drawn as wire-frame
drawWithoutTextures(primaryModel);
if (secondaryModel != null)
drawWithoutTextures(secondaryModel);
} else {
gl.glPolygonMode( GL_FRONT_AND_BACK, GL_FILL); // drawn as full traingles
drawWithoutTextures(primaryModel);
if (secondaryModel != null)
drawWithoutTextures(secondaryModel);
}
}
//gl.glPopMatrix();
gl.glFlush();
}
/**
* Loops through the facets and render each of them
*
* @param model model of the face
*/
@Override
public void drawWithoutTextures(MeshModel model) {
for (int i = 0; i < model.getFacets().size(); i++) {
renderFacet(model.getFacets().get(i));
}
other = !other;
}
/**
* Loops through the facet and render all the vertices as they are stored in corner table
*
* @param facet facet of model
*/
@Override
public void renderFacet(MeshFacet facet) {
gl.glBegin(GL2.GL_TRIANGLES); //vertices are rendered as triangles
// get the normal and tex coords indicies for face i
for (int v = 0; v < facet.getCornerTable().getSize(); v++) {
// render the normals
Vector3d norm;
norm = facet.getVertices().get(facet.getCornerTable().getRow(v).getVertexIndex()).getNormal();
if(norm != null) {
gl.glNormal3d(norm.x, norm.y, norm.z);
}
// render the vertices
Vector3d vert;
vert = facet.getVertices().get(facet.getCornerTable().getRow(v).getVertexIndex()).getPosition();
//Color c = Color.GREEN;
if (other && secondaryModel != null)
gl.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_DIFFUSE, secondaryColor.getComponents(null), 0);
else
gl.glMaterialfv(GL2.GL_FRONT_AND_BACK, GL2.GL_DIFFUSE, primaryColor.getComponents(null), 0);
gl.glVertex3d(vert.x, vert.y, vert.z);
}
gl.glEnd();
}
public Color getPrimaryColor() {
return primaryColor;
}
public void setPrimaryColor(Color primaryColor) {
this.primaryColor = primaryColor;
}
public Color getSecondaryColor() {
return secondaryColor;
}
public void setSecondaryColor(Color secondaryColor) {
this.secondaryColor = secondaryColor;
}
}
...@@ -5,3 +5,7 @@ PreferencesTopComponent.jSlider2.toolTipText= ...@@ -5,3 +5,7 @@ PreferencesTopComponent.jSlider2.toolTipText=
PreferencesTopComponent.jLabel2.text=Rotation speed PreferencesTopComponent.jLabel2.text=Rotation speed
PreferencesTopComponent.jSlider1.toolTipText= PreferencesTopComponent.jSlider1.toolTipText=
PreferencesTopComponent.jLabel3.text=Movement speed PreferencesTopComponent.jLabel3.text=Movement speed
AligmentTopComponent.jLabel1.text=Registration
AligmentTopComponent.jButton1.text=Register
AligmentTopComponent.jLabel2.text=Primary color
AligmentTopComponent.jLabel3.text=Secondary color
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment