Skip to content

Commit c47ada6

Browse files
committed
Merge branch 'develop' into feature/impedance-control
2 parents ad5c4bd + 21f26ba commit c47ada6

File tree

35 files changed

+1487
-564
lines changed

35 files changed

+1487
-564
lines changed

ihmc-footstep-planning/src/main/java/us/ihmc/footstepPlanning/communication/ContinuousWalkingAPI.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import controller_msgs.msg.dds.FootstepDataListMessage;
66
import controller_msgs.msg.dds.RigidBodyTransformMessage;
77
import ihmc_common_msgs.msg.dds.PoseListMessage;
8-
import std_msgs.Empty;
8+
import std_msgs.msg.dds.Empty;
99
import us.ihmc.communication.property.StoredPropertySetROS2TopicPair;
1010
import us.ihmc.robotics.robotSide.SideDependentList;
1111
import us.ihmc.ros2.ROS2Topic;
Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
package us.ihmc.rdx;
2+
3+
import com.badlogic.gdx.graphics.Color;
4+
import com.badlogic.gdx.graphics.Mesh;
5+
import com.badlogic.gdx.graphics.VertexAttributes;
6+
import com.badlogic.gdx.graphics.g3d.Material;
7+
import com.badlogic.gdx.graphics.g3d.Renderable;
8+
import com.badlogic.gdx.graphics.g3d.RenderableProvider;
9+
import com.badlogic.gdx.graphics.g3d.shaders.DefaultShader;
10+
import com.badlogic.gdx.utils.Array;
11+
import com.badlogic.gdx.utils.Pool;
12+
import net.mgsx.gltf.scene3d.attributes.PBRColorAttribute;
13+
import org.lwjgl.opengl.GL41;
14+
import us.ihmc.rdx.shader.RDXShader;
15+
import us.ihmc.rdx.shader.RDXUniform;
16+
17+
import javax.annotation.Nullable;
18+
19+
public abstract class AbstractRDXPointCloudRenderer implements RenderableProvider
20+
{
21+
public enum ColoringMethod
22+
{
23+
DEFAULT, GRADIENT_WORLD_Z, GRADIENT_SENSOR_X, COLOR_IMAGE
24+
}
25+
26+
// The point cloud renderable
27+
protected Renderable renderable;
28+
29+
protected int floatsPerVertex = 0;
30+
31+
// GENERALLY NEEDED UNIFORMS
32+
private float pointScale = 0.003f;
33+
private final Color defaultPointColor = new Color(Color.WHITE);
34+
private ColoringMethod coloringMethod = ColoringMethod.DEFAULT;
35+
36+
/**
37+
* Creates and initializes everything needed for rendering point clouds.
38+
*
39+
* @param maxPoints Maximum number of points this renderer will be able to render.
40+
*/
41+
public void create(int maxPoints)
42+
{
43+
GL41.glEnable(GL41.GL_VERTEX_PROGRAM_POINT_SIZE);
44+
45+
renderable = new Renderable();
46+
renderable.meshPart.primitiveType = GL41.GL_POINTS;
47+
renderable.meshPart.offset = 0;
48+
renderable.material = new Material(PBRColorAttribute.createBaseColorFactor(Color.WHITE));
49+
50+
VertexAttributes vertexAttributes = getVertexAttributes();
51+
floatsPerVertex = vertexAttributes.vertexSize / Float.BYTES;
52+
53+
boolean isStatic = false;
54+
int maxIndices = 0;
55+
renderable.meshPart.mesh = new Mesh(isStatic, maxPoints, maxIndices, vertexAttributes);
56+
57+
RDXShader shader = new RDXShader(getClass());
58+
shader.create(getVertexShaderFlags(), getFragmentShaderFlags());
59+
registerUniforms(shader);
60+
61+
shader.init(renderable);
62+
renderable.shader = shader.getBaseShader();
63+
}
64+
65+
@Override
66+
public void getRenderables(Array<Renderable> renderables, Pool<Renderable> pool)
67+
{
68+
if (renderable != null)
69+
renderables.add(renderable);
70+
}
71+
72+
public void dispose()
73+
{
74+
if (renderable.meshPart.mesh != null)
75+
renderable.meshPart.mesh.dispose();
76+
}
77+
78+
public void setPointScale(float scale)
79+
{
80+
pointScale = scale;
81+
}
82+
83+
public void setDefaultPointColor(Color color)
84+
{
85+
defaultPointColor.set(color);
86+
}
87+
88+
public void setColoringMethod(ColoringMethod method)
89+
{
90+
coloringMethod = method;
91+
}
92+
93+
/**
94+
* @return The {@link ColoringMethod}s that the super class can use.
95+
*/
96+
public abstract ColoringMethod[] getAvailableColoringMethods();
97+
98+
/**
99+
* Called when initializing the shader.
100+
*
101+
* @return #define flags that should be added to the fragment shader.
102+
*/
103+
@Nullable
104+
protected abstract String[] getFragmentShaderFlags();
105+
106+
/**
107+
* Called when initializing the shader.
108+
*
109+
* @return #define flags that should be added to the vertex shader
110+
*/
111+
@Nullable
112+
protected abstract String[] getVertexShaderFlags();
113+
114+
/**
115+
* @return The vertex attributes of the shader
116+
*/
117+
protected abstract VertexAttributes getVertexAttributes();
118+
119+
/**
120+
* Registers all required uniforms to the passed in shader.
121+
*
122+
* @param rdxShader The shader to which uniforms are registered.
123+
*/
124+
protected abstract void registerUniforms(RDXShader rdxShader);
125+
126+
protected void registerGeneralUniforms(RDXShader rdxShader)
127+
{
128+
rdxShader.getBaseShader().register(DefaultShader.Inputs.viewTrans, DefaultShader.Setters.viewTrans);
129+
rdxShader.getBaseShader().register(DefaultShader.Inputs.projTrans, DefaultShader.Setters.projTrans);
130+
131+
RDXUniform screenWidthUniform = RDXUniform.createGlobalUniform("u_screenWidth", (shader, inputID, renderable, combinedAttributes) ->
132+
{
133+
shader.set(inputID, shader.camera.viewportWidth);
134+
});
135+
rdxShader.registerUniform(screenWidthUniform);
136+
137+
RDXUniform pointScaleUniform = RDXUniform.createGlobalUniform("u_pointScale", (shader, inputID, renderable, combinedAttributes) ->
138+
{
139+
shader.set(inputID, pointScale);
140+
});
141+
rdxShader.registerUniform(pointScaleUniform);
142+
143+
RDXUniform defaultPointColorUniform = RDXUniform.createGlobalUniform("u_defaultPointColor", (shader, inputID, renderable, combinedAttributes) ->
144+
{
145+
shader.set(inputID, defaultPointColor);
146+
});
147+
rdxShader.registerUniform(defaultPointColorUniform);
148+
149+
RDXUniform coloringMethodUniform = RDXUniform.createGlobalUniform("u_coloringMethod", (shader, inputID, renderable, combinedAttributes) ->
150+
{
151+
shader.set(inputID, coloringMethod.ordinal());
152+
});
153+
154+
rdxShader.registerUniform(coloringMethodUniform);
155+
}
156+
}

ihmc-graphics/src/libgdx/java/us/ihmc/rdx/BufferBasedColorProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package us.ihmc.rdx;
22

33
import com.badlogic.gdx.graphics.Color;
4-
import us.ihmc.rdx.RDXPointCloudRenderer.ColorProvider;
4+
import us.ihmc.rdx.RDXPointCloudRendererOld.ColorProvider;
55

66
import java.util.ArrayList;
77

0 commit comments

Comments
 (0)