Jump to content

NQ-Wanderer

Staff
  • Posts

    136
  • Joined

Reputation Activity

  1. Like
    NQ-Wanderer got a reaction from Metsys in ROADMAP UPDATE: PREPARE FOR WAR WITH THE COMING OF 0.29 "ATHENA"   
    Can you hear that low rumble tumbling across the sky? It’s the goddess of war and wisdom, and she’s bringing the heat.
     
    Slated for the end of Spring, the Dual Universe Athena update heralds a new tidal wave of conflict that will set Helios ablaze.
     
    For peace-loving Noveans uninterested in warfare, Athena also includes a completely overhauled First Time User Experience (FTUE), a Space Market, and a variety of visual upgrades to the game.
     

     
     
    WHAT’S IN IT
     
    Space warfare hits a new stratosphere with the introduction of alien core units that will spawn in PvP zones. Think of them as resource-generating facilities, like space mining points. Players and organizations can claim these points to accumulate resources. But nothing comes free or easy in space. Alien core units must be defended. Do you have the mettle to get this metal?
     
    These alien core units also serve additional purposes. The first is to provide fresh new PvP challenges for fighter types, and the second is to reduce the pressure on players who wish to avoid PvP side of DU but still find themselves ambushed by pirates when they step out of the safe zone.
     
    To better balance PvP, we are adding stasis weapons and altering the behavior around a constructs’ maximum speed. With these sweet guns, big armored ships with powerful space engines will no longer have an advantage that allowed them to escape more agile smaller designs.
     
    Last but not least on the topic of PvP, our voxel team has improved the performances near combat-related explosions, especially the destruction of voxels. We aren’t losing focus on keeping improving our players’ experience in Helios!
     
    Shifting gears away from the pew pew pew features in Athena, we have also revamped the FTUE to provide a better, more easily comprehensible starting experience for new players. We want to give new players all the information they need to settle into DU with a solid foundation.
     
    Among other features, you can look forward to the following:
    New space map New skybox and stars rendering improvements Improved water visuals Improved flashlight visuals  Mining Units Lua API Space market Element stacking exploit fix  
    The best news of all is that we plan to release a smaller update between now and Athena release to introduce some quality of life improvements.
     
    WHAT’S NEXT
     
    As usual, we’ll publish a series of devblogs to provide deeper insight into the new Athena features. We hope that you’ll like what you see!
     
    Thanks to your constructive feedback, we have fine-tuned and balanced the content of Panacea with overall good results. We hope to see more of the same, so we encourage you to continue engaging with us as you read the upcoming articles. Your ideas and feedback are what will make Dual Universe better.
     
    Head over to this thread and let’s chat!
     
  2. Like
    NQ-Wanderer got a reaction from Luckso in ROADMAP UPDATE: PREPARE FOR WAR WITH THE COMING OF 0.29 "ATHENA"   
    Can you hear that low rumble tumbling across the sky? It’s the goddess of war and wisdom, and she’s bringing the heat.
     
    Slated for the end of Spring, the Dual Universe Athena update heralds a new tidal wave of conflict that will set Helios ablaze.
     
    For peace-loving Noveans uninterested in warfare, Athena also includes a completely overhauled First Time User Experience (FTUE), a Space Market, and a variety of visual upgrades to the game.
     

     
     
    WHAT’S IN IT
     
    Space warfare hits a new stratosphere with the introduction of alien core units that will spawn in PvP zones. Think of them as resource-generating facilities, like space mining points. Players and organizations can claim these points to accumulate resources. But nothing comes free or easy in space. Alien core units must be defended. Do you have the mettle to get this metal?
     
    These alien core units also serve additional purposes. The first is to provide fresh new PvP challenges for fighter types, and the second is to reduce the pressure on players who wish to avoid PvP side of DU but still find themselves ambushed by pirates when they step out of the safe zone.
     
    To better balance PvP, we are adding stasis weapons and altering the behavior around a constructs’ maximum speed. With these sweet guns, big armored ships with powerful space engines will no longer have an advantage that allowed them to escape more agile smaller designs.
     
    Last but not least on the topic of PvP, our voxel team has improved the performances near combat-related explosions, especially the destruction of voxels. We aren’t losing focus on keeping improving our players’ experience in Helios!
     
    Shifting gears away from the pew pew pew features in Athena, we have also revamped the FTUE to provide a better, more easily comprehensible starting experience for new players. We want to give new players all the information they need to settle into DU with a solid foundation.
     
    Among other features, you can look forward to the following:
    New space map New skybox and stars rendering improvements Improved water visuals Improved flashlight visuals  Mining Units Lua API Space market Element stacking exploit fix  
    The best news of all is that we plan to release a smaller update between now and Athena release to introduce some quality of life improvements.
     
    WHAT’S NEXT
     
    As usual, we’ll publish a series of devblogs to provide deeper insight into the new Athena features. We hope that you’ll like what you see!
     
    Thanks to your constructive feedback, we have fine-tuned and balanced the content of Panacea with overall good results. We hope to see more of the same, so we encourage you to continue engaging with us as you read the upcoming articles. Your ideas and feedback are what will make Dual Universe better.
     
    Head over to this thread and let’s chat!
     
  3. Like
    NQ-Wanderer got a reaction from Iamhole in ROADMAP UPDATE: PREPARE FOR WAR WITH THE COMING OF 0.29 "ATHENA"   
    Can you hear that low rumble tumbling across the sky? It’s the goddess of war and wisdom, and she’s bringing the heat.
     
    Slated for the end of Spring, the Dual Universe Athena update heralds a new tidal wave of conflict that will set Helios ablaze.
     
    For peace-loving Noveans uninterested in warfare, Athena also includes a completely overhauled First Time User Experience (FTUE), a Space Market, and a variety of visual upgrades to the game.
     

     
     
    WHAT’S IN IT
     
    Space warfare hits a new stratosphere with the introduction of alien core units that will spawn in PvP zones. Think of them as resource-generating facilities, like space mining points. Players and organizations can claim these points to accumulate resources. But nothing comes free or easy in space. Alien core units must be defended. Do you have the mettle to get this metal?
     
    These alien core units also serve additional purposes. The first is to provide fresh new PvP challenges for fighter types, and the second is to reduce the pressure on players who wish to avoid PvP side of DU but still find themselves ambushed by pirates when they step out of the safe zone.
     
    To better balance PvP, we are adding stasis weapons and altering the behavior around a constructs’ maximum speed. With these sweet guns, big armored ships with powerful space engines will no longer have an advantage that allowed them to escape more agile smaller designs.
     
    Last but not least on the topic of PvP, our voxel team has improved the performances near combat-related explosions, especially the destruction of voxels. We aren’t losing focus on keeping improving our players’ experience in Helios!
     
    Shifting gears away from the pew pew pew features in Athena, we have also revamped the FTUE to provide a better, more easily comprehensible starting experience for new players. We want to give new players all the information they need to settle into DU with a solid foundation.
     
    Among other features, you can look forward to the following:
    New space map New skybox and stars rendering improvements Improved water visuals Improved flashlight visuals  Mining Units Lua API Space market Element stacking exploit fix  
    The best news of all is that we plan to release a smaller update between now and Athena release to introduce some quality of life improvements.
     
    WHAT’S NEXT
     
    As usual, we’ll publish a series of devblogs to provide deeper insight into the new Athena features. We hope that you’ll like what you see!
     
    Thanks to your constructive feedback, we have fine-tuned and balanced the content of Panacea with overall good results. We hope to see more of the same, so we encourage you to continue engaging with us as you read the upcoming articles. Your ideas and feedback are what will make Dual Universe better.
     
    Head over to this thread and let’s chat!
     
  4. Like
    NQ-Wanderer got a reaction from Snapsis in DEVBLOG: PRECISION IN BUILDING   
    In the upcoming 0.28 Panacea update, we will introduce the Vertex Precision Tool (VPT), which adds a whole new way of bringing detail to your creative designs.
     
    This all may sound quite complex initially, but once you get used to the tool it’s quite intuitive. If you’ve been holding back because voxelmancy seemed too complicated, now’s the time to give it a try. By allowing you to simply equip the VPT and move the vertex around on a changeable grid, the process of designing with voxels is greatly simplified and far more user-friendly.
     
    Here’s a brief demonstration of what the VPT looks like and how it’s used:
     
     
    Heads up! The information in this blog leans heavily into the extremely technical side of things. Those who are into voxelmancy will probably dive in with unfettered joy. If building isn’t your jam, you may wish to stop here and get the TL;DR from one of your builder buddies later.
     
    VOXELS DEFINED
     
    Much of what you see in Dual Universe was built by players using voxels. The term “voxel” is very generic, a shortened form of “volume element”. Voxelmancy is an advanced form of building that can be quite complex, and there has always been a gap between building with standard geometric shapes and fine-tuned designs. The VPT aims to bring a game-changing  bridge for the gap between these building styles.
     
    How exactly the voxels are implemented depends a lot on the software that’s being used. In DU, a voxel contains two things: material information and a vertex position information.
     
    The material information is pretty straightforward; it is exactly the same as in a pixelated image where there is a material (think of it as a synonym of “color“) for each little square. We use what we call a uniform grid, meaning that voxels are put next to each other in a 3D grid and all have the same size. For example, on a planet voxels are 1 meter long (1m x 1m x 1m) whereas they can be 25 centimeters long (0.25m x 0.25m x 0.25m) on a user construct. It’s exactly how pixels work in 2D images, and you may already be familiar with these kinds of voxels because they are present in games like Minecraft.
     
    VERTICES POSITIONS
     
    Let’s drill down even deeper into the well of technical stuff.
     
    As stated above, voxels contain material information and a vertex position information. The Vertex Precision Tool doesn’t touch materials, so let’s talk about vertices.
     
    3D geometry is composed of vertices, and those vertices are linked together to form faces that will be rendered on your screen. For instance, take a simple single voxel cube. It is composed of one material, but has eight vertices on the eight corners. Since our voxels in DU store both a material and a vertex position, our “single voxel” here is composed of eight voxels because it takes eight vertices to form a cube!
     
    This is where it starts getting complicated. We can consider that there are two voxel grids, one is the material grid and the other is the vertex position grid, and the two grids are shifted, dual to each other. There are eight vertices around a material, and there are eight materials (we can consider the void as a special kind of material) around a vertex.
     
    So what are we talking about when we talk about a voxel? A little bit of both, depending on the context. Confusing right? We’ll try to be specific and talk about vertices, but remember there is only one vertex per voxel, although one voxel cube is composed of eight vertices (and thus is in reality eight voxels: one with matter and seven without matter.)
     
    Take a look at this picture. It is in 2D because it’s easier to understand (and to draw), but this is the same thing in 3D. This image represents a voxel sphere (more like a circle since we are in 2D).
     

      The dotted lines are the uniform grid that represent the voxels. At the intersection of those dotted lines, you can have a blue dot, representing a material. So, we have our material grid: either emptiness or a blue material. Inside of all of those cells, there may be a vertex. There is a vertex if and only if all four corners are not the same. If one of the corners is blue and another one empty, it means we have some material change here and thus something to see. So we need a vertex to know where we see the surface. On each of those cells, we have a vertex represented. The vertices are then linked together to form the surface.
     
    POSITIONS VALUES
     
    Before the Panacea update, you could only get such a sphere with the sphere tool, but with the VTP you’ll now have the opportunity to change the vertex position manually. This raises the question: what coordinate system do we use?
     
    In theory, we could use an infinite range of values. For example, we could say that the vertex should be at one third (on a given axis) in between the two materials as shown in the grid, so its value (on this axis) could be 0.333333333. It could also be 0.1415926535, or whatever we want.
     
    However, we need to store those vertex positions, and we want to be efficient so that we don’t take too much disk usage so we encode the vertex position (on a given axis) on a single byte. This means we only have 256 different possibilities for a vertex position, but we don’t really need more. A vertex position is a coordinate with three numbers (for the three axes) where all of these numbers are integers (with a maximum 256 different possible integers).
     
    So what are those possible values? Before answering that, we need to consider where a vertex can lie. On the sphere representation drawing, you can see that vertices are inside the zone defined by the four surrounding material points. This is indeed where a vertex should be most of the time, although we may sometimes want to overflow a bit, reach a little further than the vertex is supposed to. This will encroach on the zone of the neighbor voxel, but it does not have to be a problem. We decided that a vertex could lie on its one zone, but also the zone of its direct neighbors. On the 2D schematics above, it means that a vertex can be placed anywhere on the nine squares around it.
     
    A vertex encoding actually encodes three vertice’s positions. We want to have an encoding for all the important positions, the middle of each of the three voxels and their borders. This means that we need a multiple of six. We’ll use 252 as it is very close to 256. Now let’s see this coordinate system in a picture. The picture below represents four simple cubes in voxels (yellow, red, blue and cyan).
     
    We will be talking about the vertex shared by the red and blue cubes. There are actually two of those vertices in 2D, one top and one bottom; let’s talk about the top one. We state that the position it is in in the picture will be 0 (it’s a convention, the one chosen in the Vertex Precision Tool), and above the cubes we showed all the position values this vertex could have
     
     
    So 0 is the position of a vertex in a simple voxel cube. If we move the vertex into position 42 (both the top and bottom vertex of this red-blue junction), then the red rectangle will now be 1.5 times bigger, and the blue rectangle will be half its current size. If we move the vertices to -42, it would be the other way around. Note that all the values between -42 and 42 are the values where the vertex is supposed to be without overflow. This is the zone we described earlier.
     
    If we were to move the vertices to value 84, then we would enter the territory of the vertex shared by the blue and cyan cubes. This becomes a little dangerous and could result in strange results. In this example, it would lead to the blue surface to completely disappear and be replaced by the red one. The blue voxel would still exist, it would just have a null volume.
     
    And, in the example of these four cubes, if we were to go to a value above 84, it would result in an ill-formed shape because the blue shape would have a negative volume. This would probably create visual artifacts, and we may prevent this situation in the future.
     
    ENCODING CHANGE
     
    One last note for those who are familiar with voxelmancy. In Panacea, we use an encoding of 253 positions (from -126 to 126), which is different than it has been. We used an encoding of 255 positions (it was from -128 to 128 but previous -128 = actual -126). Since there is no exact mapping between the old encoding to the new one, this means that vertices in your constructs may be shifted up to 1mm (vertices at position 0 will not move, but those at extreme values will move the most). This will probably be unnoticeable, but we wanted to err on the side of caution and share this information.
     
    You may wonder, why 253? It is for the reasons explained before, to have those nice -126, -84, -42, 0, 42, 84 and 126 values. The 255 system did not allow for that. We could have chosen 193, so that you could split a voxel in 2, 4, 8, 16, 32, and 64, but that would have meant a huge loss in precision and significantly deformed most constructs. So 253 it is, and you can now split a voxel in 42!
     
    USING THE VPT
     
    There are exactly 253 positions on a single axis including zero that a vertex can be in due to it being divisible over three voxels. Negative 126, 0, and positive 126. As such, the width of one voxel is exactly 84 positions. And each vertex can be moved exactly 1.5 voxel away from the center position.
     
    Thus, the grid on which a vertex is moved is adjustable to a size that covers 1, 2, 4, 7, 14, 21 or 42 positions, 42 being the size of half a voxel. This allows the accurate placement to the finest detail or to quickly scale up and move a vertex by a half, a quarter, a sixth, or a twelfth of a voxel.
     
    See the image below to get an idea of the different size grids available to the VPT.
     
     
    Once selected, the vertex cursor can then be moved with:
    The up, down, left arrow and right Arrow keys for the x- and y-axis.
    The Page Up and Page Down for the z-axis.
    The Home key to send the cursor to the current position of the vertex.
    The End key to send your cursor to the last confirmed coordinates.
    (This also happens by default when you change vertices.)
    The Alt+Home key combination to send the cursor to the centered 0,0,0 coordinates.
    Holding Control+Scroll will adjust the grid size between the available sizes.
    Left-click confirms the placement and moves the selected vertex to the cursor.
     
    The VPT will give you the finest precision possible, no more complex voxelmancy of copy-pasting things around to get a specific shape. You may not use this tool all the time, but when you do you’ll find it exceptionally helpful for fine-tuning.
     
    WHEW, THAT’S A LOTTA INFO!
     
    Still with us? We know there’s a lot of information to process, but we felt it was worthwhile to share the details with our voxelating community members that would appreciate seeing how the sausage is made (so to speak).
     
    We can’t wait to see the cool new stuff Noveans build with the Vertex Precision Tool. As always, we encourage everyone to join the conversation on the forum in this thread. If you have questions about the VPT or want to share your thoughts and tips about voxelmancy in general, that’s the place to go.
     
     
  5. Like
    NQ-Wanderer got a reaction from Cabana in DEVBLOG: PRECISION IN BUILDING   
    In the upcoming 0.28 Panacea update, we will introduce the Vertex Precision Tool (VPT), which adds a whole new way of bringing detail to your creative designs.
     
    This all may sound quite complex initially, but once you get used to the tool it’s quite intuitive. If you’ve been holding back because voxelmancy seemed too complicated, now’s the time to give it a try. By allowing you to simply equip the VPT and move the vertex around on a changeable grid, the process of designing with voxels is greatly simplified and far more user-friendly.
     
    Here’s a brief demonstration of what the VPT looks like and how it’s used:
     
     
    Heads up! The information in this blog leans heavily into the extremely technical side of things. Those who are into voxelmancy will probably dive in with unfettered joy. If building isn’t your jam, you may wish to stop here and get the TL;DR from one of your builder buddies later.
     
    VOXELS DEFINED
     
    Much of what you see in Dual Universe was built by players using voxels. The term “voxel” is very generic, a shortened form of “volume element”. Voxelmancy is an advanced form of building that can be quite complex, and there has always been a gap between building with standard geometric shapes and fine-tuned designs. The VPT aims to bring a game-changing  bridge for the gap between these building styles.
     
    How exactly the voxels are implemented depends a lot on the software that’s being used. In DU, a voxel contains two things: material information and a vertex position information.
     
    The material information is pretty straightforward; it is exactly the same as in a pixelated image where there is a material (think of it as a synonym of “color“) for each little square. We use what we call a uniform grid, meaning that voxels are put next to each other in a 3D grid and all have the same size. For example, on a planet voxels are 1 meter long (1m x 1m x 1m) whereas they can be 25 centimeters long (0.25m x 0.25m x 0.25m) on a user construct. It’s exactly how pixels work in 2D images, and you may already be familiar with these kinds of voxels because they are present in games like Minecraft.
     
    VERTICES POSITIONS
     
    Let’s drill down even deeper into the well of technical stuff.
     
    As stated above, voxels contain material information and a vertex position information. The Vertex Precision Tool doesn’t touch materials, so let’s talk about vertices.
     
    3D geometry is composed of vertices, and those vertices are linked together to form faces that will be rendered on your screen. For instance, take a simple single voxel cube. It is composed of one material, but has eight vertices on the eight corners. Since our voxels in DU store both a material and a vertex position, our “single voxel” here is composed of eight voxels because it takes eight vertices to form a cube!
     
    This is where it starts getting complicated. We can consider that there are two voxel grids, one is the material grid and the other is the vertex position grid, and the two grids are shifted, dual to each other. There are eight vertices around a material, and there are eight materials (we can consider the void as a special kind of material) around a vertex.
     
    So what are we talking about when we talk about a voxel? A little bit of both, depending on the context. Confusing right? We’ll try to be specific and talk about vertices, but remember there is only one vertex per voxel, although one voxel cube is composed of eight vertices (and thus is in reality eight voxels: one with matter and seven without matter.)
     
    Take a look at this picture. It is in 2D because it’s easier to understand (and to draw), but this is the same thing in 3D. This image represents a voxel sphere (more like a circle since we are in 2D).
     

      The dotted lines are the uniform grid that represent the voxels. At the intersection of those dotted lines, you can have a blue dot, representing a material. So, we have our material grid: either emptiness or a blue material. Inside of all of those cells, there may be a vertex. There is a vertex if and only if all four corners are not the same. If one of the corners is blue and another one empty, it means we have some material change here and thus something to see. So we need a vertex to know where we see the surface. On each of those cells, we have a vertex represented. The vertices are then linked together to form the surface.
     
    POSITIONS VALUES
     
    Before the Panacea update, you could only get such a sphere with the sphere tool, but with the VTP you’ll now have the opportunity to change the vertex position manually. This raises the question: what coordinate system do we use?
     
    In theory, we could use an infinite range of values. For example, we could say that the vertex should be at one third (on a given axis) in between the two materials as shown in the grid, so its value (on this axis) could be 0.333333333. It could also be 0.1415926535, or whatever we want.
     
    However, we need to store those vertex positions, and we want to be efficient so that we don’t take too much disk usage so we encode the vertex position (on a given axis) on a single byte. This means we only have 256 different possibilities for a vertex position, but we don’t really need more. A vertex position is a coordinate with three numbers (for the three axes) where all of these numbers are integers (with a maximum 256 different possible integers).
     
    So what are those possible values? Before answering that, we need to consider where a vertex can lie. On the sphere representation drawing, you can see that vertices are inside the zone defined by the four surrounding material points. This is indeed where a vertex should be most of the time, although we may sometimes want to overflow a bit, reach a little further than the vertex is supposed to. This will encroach on the zone of the neighbor voxel, but it does not have to be a problem. We decided that a vertex could lie on its one zone, but also the zone of its direct neighbors. On the 2D schematics above, it means that a vertex can be placed anywhere on the nine squares around it.
     
    A vertex encoding actually encodes three vertice’s positions. We want to have an encoding for all the important positions, the middle of each of the three voxels and their borders. This means that we need a multiple of six. We’ll use 252 as it is very close to 256. Now let’s see this coordinate system in a picture. The picture below represents four simple cubes in voxels (yellow, red, blue and cyan).
     
    We will be talking about the vertex shared by the red and blue cubes. There are actually two of those vertices in 2D, one top and one bottom; let’s talk about the top one. We state that the position it is in in the picture will be 0 (it’s a convention, the one chosen in the Vertex Precision Tool), and above the cubes we showed all the position values this vertex could have
     
     
    So 0 is the position of a vertex in a simple voxel cube. If we move the vertex into position 42 (both the top and bottom vertex of this red-blue junction), then the red rectangle will now be 1.5 times bigger, and the blue rectangle will be half its current size. If we move the vertices to -42, it would be the other way around. Note that all the values between -42 and 42 are the values where the vertex is supposed to be without overflow. This is the zone we described earlier.
     
    If we were to move the vertices to value 84, then we would enter the territory of the vertex shared by the blue and cyan cubes. This becomes a little dangerous and could result in strange results. In this example, it would lead to the blue surface to completely disappear and be replaced by the red one. The blue voxel would still exist, it would just have a null volume.
     
    And, in the example of these four cubes, if we were to go to a value above 84, it would result in an ill-formed shape because the blue shape would have a negative volume. This would probably create visual artifacts, and we may prevent this situation in the future.
     
    ENCODING CHANGE
     
    One last note for those who are familiar with voxelmancy. In Panacea, we use an encoding of 253 positions (from -126 to 126), which is different than it has been. We used an encoding of 255 positions (it was from -128 to 128 but previous -128 = actual -126). Since there is no exact mapping between the old encoding to the new one, this means that vertices in your constructs may be shifted up to 1mm (vertices at position 0 will not move, but those at extreme values will move the most). This will probably be unnoticeable, but we wanted to err on the side of caution and share this information.
     
    You may wonder, why 253? It is for the reasons explained before, to have those nice -126, -84, -42, 0, 42, 84 and 126 values. The 255 system did not allow for that. We could have chosen 193, so that you could split a voxel in 2, 4, 8, 16, 32, and 64, but that would have meant a huge loss in precision and significantly deformed most constructs. So 253 it is, and you can now split a voxel in 42!
     
    USING THE VPT
     
    There are exactly 253 positions on a single axis including zero that a vertex can be in due to it being divisible over three voxels. Negative 126, 0, and positive 126. As such, the width of one voxel is exactly 84 positions. And each vertex can be moved exactly 1.5 voxel away from the center position.
     
    Thus, the grid on which a vertex is moved is adjustable to a size that covers 1, 2, 4, 7, 14, 21 or 42 positions, 42 being the size of half a voxel. This allows the accurate placement to the finest detail or to quickly scale up and move a vertex by a half, a quarter, a sixth, or a twelfth of a voxel.
     
    See the image below to get an idea of the different size grids available to the VPT.
     
     
    Once selected, the vertex cursor can then be moved with:
    The up, down, left arrow and right Arrow keys for the x- and y-axis.
    The Page Up and Page Down for the z-axis.
    The Home key to send the cursor to the current position of the vertex.
    The End key to send your cursor to the last confirmed coordinates.
    (This also happens by default when you change vertices.)
    The Alt+Home key combination to send the cursor to the centered 0,0,0 coordinates.
    Holding Control+Scroll will adjust the grid size between the available sizes.
    Left-click confirms the placement and moves the selected vertex to the cursor.
     
    The VPT will give you the finest precision possible, no more complex voxelmancy of copy-pasting things around to get a specific shape. You may not use this tool all the time, but when you do you’ll find it exceptionally helpful for fine-tuning.
     
    WHEW, THAT’S A LOTTA INFO!
     
    Still with us? We know there’s a lot of information to process, but we felt it was worthwhile to share the details with our voxelating community members that would appreciate seeing how the sausage is made (so to speak).
     
    We can’t wait to see the cool new stuff Noveans build with the Vertex Precision Tool. As always, we encourage everyone to join the conversation on the forum in this thread. If you have questions about the VPT or want to share your thoughts and tips about voxelmancy in general, that’s the place to go.
     
     
  6. Like
    NQ-Wanderer got a reaction from Cybob19 in DEVBLOG: CONSTRUCTION SLOTS AND STACKED ELEMENTS   
    It’s the tale of two stackings that were never meant to be, nested organizations and overlapping elements on ships. Both have been problematic, and we’d like to give you an update on the steps we’re taking to correct them.
     
     
    ORGANIZATION CONSTRUCT SLOTS
     
    Several months ago, we suggested a way to address the issue of cascading organizations being created as a way to circumvent the soft limitations of construct and territory numbers. Players raised some valid concerns about the proposal, citing that it would adversely affect how they managed their organizations’ holdings. In consideration of that feedback, we temporarily tabled the proposed changes and went back to the drawing board.
     
    The problem remains and needs to be resolved sooner rather than later to avoid a myriad of issues in the future. DU simply can’t support an infinite number of constructs per player. It’s why we have construct allowances in the first place. We needed a solution that would support community projects for organizations of any size without penalizing those that are prolific. After all, one of the core features of DU is to build lots of cool stuff.
     
     
    THE NEW WAY
     
    The solution we’ve designed will detach construct capacity rights from organizations and put them directly into players’ hands. 
     
    Organizations will now have a base construct capacity of zero.
    The reasoning behind this is to no longer make it a viable option to create countless organizations simply to increase the capacity of constructs available. This will now depend on the next item on the list…
    Each Novean will have 15 assignable organization construct slots, with an additional 10 available from talents.
    This change allows us to scale the maximum number of constructs to the number of players. This can be beneficial to smaller organizations because… 
    Players can assign these slots to any organization of their choosing, whether or not they are a member of the organization.
    We hope to see players use their available organization construct slots to support their organizations and to help support community projects they like. For those who want to support a different organization…
    Noveans can reassign their slots from one organization to another, though this will cause the former organization to lose construct capacity.
    This means that...
    An organization that loses capacity will either need to acquire new slots from players in order to support its infrastructure or reduce its number of constructs.
    If the organization has more constructs than its allotted slots for two weeks, the organization will receive a warning. 
    If the organization does not either reduce its construct count to below its new allocated slots or increase its slot count two weeks after the warning, random constructs from that organization will become abandoned and lose ownership. At that point, any player or organization who has the necessary allotment of construct slots may claim it. 
    This system allows us to maintain a balance in terms of expected constructs present.
     
    Further, to prevent players from trying to circumnavigate the system by reassigning construct slots back and forth every two weeks, there will be a minimum of 30 days before you can reassign the slots away from an organization.
     
     
    USING YOUR TALENTS
     
    Many of you likely used talents to increase an organization's construct capacity. Talents will still play a role as they provide an upper ceiling for a single organization’s capacity; however, these talents have been increased in their capacity, which now allows a single organization to have a far higher construct slot maximum.
     
    Where the old maximum was 275 constructs, the new upper limit will be 1625.
     
    As these changes significantly increase the scale of which these talents previously applied, these talents will be reset at the 0.28 Panacea release.
    Organization Construct Management
    Organization Construct Management Specialization
    Advanced Organization Construct Management Specialization
    We try to limit the resetting of talents as much as we can; however, due to the considerable changes in the way these talents now behave and scale, we feel that refunding these talents is required.
     
     
    FRESH, NEW UI
     
    All the changes revealed above will come with some UI improvements such as:
    A new interface on the organization home page, allowing each Novean to assign construct slots to organizations of their choosing and to see how many slots they have assigned to which organizations.

    A new interface called ‘Constructs’ on each organization page, allowing each organization to have insight on how many slots they have available, who they received them from, when the next construct check is due, a log of slot gains and losses, and what their slot maximum capacity and talent maximum capacity are.
     

     
    Another minor feature we will begin to introduce into some select UI elements is the ability to export lists in JSON format, the first of which can be found in the new organization ‘Constructs’ UI above. It will include a small copy-to-clipboard button, which will copy a JSON formatted string containing a list of all the data available in the column. In the above example, these can be found for:
    Construct Slots: This will return a JSON string of player names, how many slots they have shared, and if they are a member of your organization.
    Construct Check: This will return a JSON string of constructs that have been abandoned due to lack of construct slots, their coordinates at the time of abandonment, and a total count of constructs that have been abandoned.
    Log: This will return a JSON string containing the date it was copied as a unit timestamp, the number of allocation changes, followed by a list of players, how many they have lent to the organization and how many the organization has as that point, along with a Unix timestamp of the transaction.
     
    Following feedback on these export functions, we will consider implementing them for other UI elements such as, for example, the Talents UI.
     
    When the Panacea update launches, it will kick off a 30-day grace period at the end of which the abandonment of constructs will go into effect. Please note that if your organization exceeds its slot capacity, a warning message will be received; however, no abandoning will happen for the first 30 days after Panacea’s release.
     
     
    DISABLING OVERLAPPING ELEMENTS
     
    The stacking of elements on ships is unintended gameplay - aka an exploit - that we have been aware of for a regrettably long time. Though we’ve explored a few different options, including the detection solution we released previously, community feedback prompted us to postpone the disabling of elements until after Panacea’s initial release. 
     
    The revised approach will likely include trials on the Live server without disabling elements in order to measure the impact of the algorithms. We would like to thank everyone who reached out to us with constructive feedback and bug reports of elements that caused problems in specific placements.
     
     
    FEEDBACK WANTED
     
    The forums are the absolute best place to share your feedback with us. Although members of the DU dev team may pop into Discord from time to time, the loose and fluid nature of those chat channels can make it difficult to have an earnest discussion. The forums, on the other hand, are static and much more conversation-friendly. 
     
    All of that said, we hope you’ll join the conversation about this devblog here. 
  7. Like
    NQ-Wanderer got a reaction from SuperEpicAndy in DEVBLOG: CONSTRUCTION SLOTS AND STACKED ELEMENTS - discussion thread   
    Greetings! We would like to read your feedback on our latest DEVBLOG: CONSTRUCTION SLOTS AND STACKED ELEMENTS.
  8. Like
    NQ-Wanderer got a reaction from TildaW4 in DEVBLOG: CONSTRUCTION SLOTS AND STACKED ELEMENTS   
    It’s the tale of two stackings that were never meant to be, nested organizations and overlapping elements on ships. Both have been problematic, and we’d like to give you an update on the steps we’re taking to correct them.
     
     
    ORGANIZATION CONSTRUCT SLOTS
     
    Several months ago, we suggested a way to address the issue of cascading organizations being created as a way to circumvent the soft limitations of construct and territory numbers. Players raised some valid concerns about the proposal, citing that it would adversely affect how they managed their organizations’ holdings. In consideration of that feedback, we temporarily tabled the proposed changes and went back to the drawing board.
     
    The problem remains and needs to be resolved sooner rather than later to avoid a myriad of issues in the future. DU simply can’t support an infinite number of constructs per player. It’s why we have construct allowances in the first place. We needed a solution that would support community projects for organizations of any size without penalizing those that are prolific. After all, one of the core features of DU is to build lots of cool stuff.
     
     
    THE NEW WAY
     
    The solution we’ve designed will detach construct capacity rights from organizations and put them directly into players’ hands. 
     
    Organizations will now have a base construct capacity of zero.
    The reasoning behind this is to no longer make it a viable option to create countless organizations simply to increase the capacity of constructs available. This will now depend on the next item on the list…
    Each Novean will have 15 assignable organization construct slots, with an additional 10 available from talents.
    This change allows us to scale the maximum number of constructs to the number of players. This can be beneficial to smaller organizations because… 
    Players can assign these slots to any organization of their choosing, whether or not they are a member of the organization.
    We hope to see players use their available organization construct slots to support their organizations and to help support community projects they like. For those who want to support a different organization…
    Noveans can reassign their slots from one organization to another, though this will cause the former organization to lose construct capacity.
    This means that...
    An organization that loses capacity will either need to acquire new slots from players in order to support its infrastructure or reduce its number of constructs.
    If the organization has more constructs than its allotted slots for two weeks, the organization will receive a warning. 
    If the organization does not either reduce its construct count to below its new allocated slots or increase its slot count two weeks after the warning, random constructs from that organization will become abandoned and lose ownership. At that point, any player or organization who has the necessary allotment of construct slots may claim it. 
    This system allows us to maintain a balance in terms of expected constructs present.
     
    Further, to prevent players from trying to circumnavigate the system by reassigning construct slots back and forth every two weeks, there will be a minimum of 30 days before you can reassign the slots away from an organization.
     
     
    USING YOUR TALENTS
     
    Many of you likely used talents to increase an organization's construct capacity. Talents will still play a role as they provide an upper ceiling for a single organization’s capacity; however, these talents have been increased in their capacity, which now allows a single organization to have a far higher construct slot maximum.
     
    Where the old maximum was 275 constructs, the new upper limit will be 1625.
     
    As these changes significantly increase the scale of which these talents previously applied, these talents will be reset at the 0.28 Panacea release.
    Organization Construct Management
    Organization Construct Management Specialization
    Advanced Organization Construct Management Specialization
    We try to limit the resetting of talents as much as we can; however, due to the considerable changes in the way these talents now behave and scale, we feel that refunding these talents is required.
     
     
    FRESH, NEW UI
     
    All the changes revealed above will come with some UI improvements such as:
    A new interface on the organization home page, allowing each Novean to assign construct slots to organizations of their choosing and to see how many slots they have assigned to which organizations.

    A new interface called ‘Constructs’ on each organization page, allowing each organization to have insight on how many slots they have available, who they received them from, when the next construct check is due, a log of slot gains and losses, and what their slot maximum capacity and talent maximum capacity are.
     

     
    Another minor feature we will begin to introduce into some select UI elements is the ability to export lists in JSON format, the first of which can be found in the new organization ‘Constructs’ UI above. It will include a small copy-to-clipboard button, which will copy a JSON formatted string containing a list of all the data available in the column. In the above example, these can be found for:
    Construct Slots: This will return a JSON string of player names, how many slots they have shared, and if they are a member of your organization.
    Construct Check: This will return a JSON string of constructs that have been abandoned due to lack of construct slots, their coordinates at the time of abandonment, and a total count of constructs that have been abandoned.
    Log: This will return a JSON string containing the date it was copied as a unit timestamp, the number of allocation changes, followed by a list of players, how many they have lent to the organization and how many the organization has as that point, along with a Unix timestamp of the transaction.
     
    Following feedback on these export functions, we will consider implementing them for other UI elements such as, for example, the Talents UI.
     
    When the Panacea update launches, it will kick off a 30-day grace period at the end of which the abandonment of constructs will go into effect. Please note that if your organization exceeds its slot capacity, a warning message will be received; however, no abandoning will happen for the first 30 days after Panacea’s release.
     
     
    DISABLING OVERLAPPING ELEMENTS
     
    The stacking of elements on ships is unintended gameplay - aka an exploit - that we have been aware of for a regrettably long time. Though we’ve explored a few different options, including the detection solution we released previously, community feedback prompted us to postpone the disabling of elements until after Panacea’s initial release. 
     
    The revised approach will likely include trials on the Live server without disabling elements in order to measure the impact of the algorithms. We would like to thank everyone who reached out to us with constructive feedback and bug reports of elements that caused problems in specific placements.
     
     
    FEEDBACK WANTED
     
    The forums are the absolute best place to share your feedback with us. Although members of the DU dev team may pop into Discord from time to time, the loose and fluid nature of those chat channels can make it difficult to have an earnest discussion. The forums, on the other hand, are static and much more conversation-friendly. 
     
    All of that said, we hope you’ll join the conversation about this devblog here. 
  9. Like
    NQ-Wanderer got a reaction from basox70 in DEVBLOG: PRECISION IN BUILDING   
    In the upcoming 0.28 Panacea update, we will introduce the Vertex Precision Tool (VPT), which adds a whole new way of bringing detail to your creative designs.
     
    This all may sound quite complex initially, but once you get used to the tool it’s quite intuitive. If you’ve been holding back because voxelmancy seemed too complicated, now’s the time to give it a try. By allowing you to simply equip the VPT and move the vertex around on a changeable grid, the process of designing with voxels is greatly simplified and far more user-friendly.
     
    Here’s a brief demonstration of what the VPT looks like and how it’s used:
     
     
    Heads up! The information in this blog leans heavily into the extremely technical side of things. Those who are into voxelmancy will probably dive in with unfettered joy. If building isn’t your jam, you may wish to stop here and get the TL;DR from one of your builder buddies later.
     
    VOXELS DEFINED
     
    Much of what you see in Dual Universe was built by players using voxels. The term “voxel” is very generic, a shortened form of “volume element”. Voxelmancy is an advanced form of building that can be quite complex, and there has always been a gap between building with standard geometric shapes and fine-tuned designs. The VPT aims to bring a game-changing  bridge for the gap between these building styles.
     
    How exactly the voxels are implemented depends a lot on the software that’s being used. In DU, a voxel contains two things: material information and a vertex position information.
     
    The material information is pretty straightforward; it is exactly the same as in a pixelated image where there is a material (think of it as a synonym of “color“) for each little square. We use what we call a uniform grid, meaning that voxels are put next to each other in a 3D grid and all have the same size. For example, on a planet voxels are 1 meter long (1m x 1m x 1m) whereas they can be 25 centimeters long (0.25m x 0.25m x 0.25m) on a user construct. It’s exactly how pixels work in 2D images, and you may already be familiar with these kinds of voxels because they are present in games like Minecraft.
     
    VERTICES POSITIONS
     
    Let’s drill down even deeper into the well of technical stuff.
     
    As stated above, voxels contain material information and a vertex position information. The Vertex Precision Tool doesn’t touch materials, so let’s talk about vertices.
     
    3D geometry is composed of vertices, and those vertices are linked together to form faces that will be rendered on your screen. For instance, take a simple single voxel cube. It is composed of one material, but has eight vertices on the eight corners. Since our voxels in DU store both a material and a vertex position, our “single voxel” here is composed of eight voxels because it takes eight vertices to form a cube!
     
    This is where it starts getting complicated. We can consider that there are two voxel grids, one is the material grid and the other is the vertex position grid, and the two grids are shifted, dual to each other. There are eight vertices around a material, and there are eight materials (we can consider the void as a special kind of material) around a vertex.
     
    So what are we talking about when we talk about a voxel? A little bit of both, depending on the context. Confusing right? We’ll try to be specific and talk about vertices, but remember there is only one vertex per voxel, although one voxel cube is composed of eight vertices (and thus is in reality eight voxels: one with matter and seven without matter.)
     
    Take a look at this picture. It is in 2D because it’s easier to understand (and to draw), but this is the same thing in 3D. This image represents a voxel sphere (more like a circle since we are in 2D).
     

      The dotted lines are the uniform grid that represent the voxels. At the intersection of those dotted lines, you can have a blue dot, representing a material. So, we have our material grid: either emptiness or a blue material. Inside of all of those cells, there may be a vertex. There is a vertex if and only if all four corners are not the same. If one of the corners is blue and another one empty, it means we have some material change here and thus something to see. So we need a vertex to know where we see the surface. On each of those cells, we have a vertex represented. The vertices are then linked together to form the surface.
     
    POSITIONS VALUES
     
    Before the Panacea update, you could only get such a sphere with the sphere tool, but with the VTP you’ll now have the opportunity to change the vertex position manually. This raises the question: what coordinate system do we use?
     
    In theory, we could use an infinite range of values. For example, we could say that the vertex should be at one third (on a given axis) in between the two materials as shown in the grid, so its value (on this axis) could be 0.333333333. It could also be 0.1415926535, or whatever we want.
     
    However, we need to store those vertex positions, and we want to be efficient so that we don’t take too much disk usage so we encode the vertex position (on a given axis) on a single byte. This means we only have 256 different possibilities for a vertex position, but we don’t really need more. A vertex position is a coordinate with three numbers (for the three axes) where all of these numbers are integers (with a maximum 256 different possible integers).
     
    So what are those possible values? Before answering that, we need to consider where a vertex can lie. On the sphere representation drawing, you can see that vertices are inside the zone defined by the four surrounding material points. This is indeed where a vertex should be most of the time, although we may sometimes want to overflow a bit, reach a little further than the vertex is supposed to. This will encroach on the zone of the neighbor voxel, but it does not have to be a problem. We decided that a vertex could lie on its one zone, but also the zone of its direct neighbors. On the 2D schematics above, it means that a vertex can be placed anywhere on the nine squares around it.
     
    A vertex encoding actually encodes three vertice’s positions. We want to have an encoding for all the important positions, the middle of each of the three voxels and their borders. This means that we need a multiple of six. We’ll use 252 as it is very close to 256. Now let’s see this coordinate system in a picture. The picture below represents four simple cubes in voxels (yellow, red, blue and cyan).
     
    We will be talking about the vertex shared by the red and blue cubes. There are actually two of those vertices in 2D, one top and one bottom; let’s talk about the top one. We state that the position it is in in the picture will be 0 (it’s a convention, the one chosen in the Vertex Precision Tool), and above the cubes we showed all the position values this vertex could have
     
     
    So 0 is the position of a vertex in a simple voxel cube. If we move the vertex into position 42 (both the top and bottom vertex of this red-blue junction), then the red rectangle will now be 1.5 times bigger, and the blue rectangle will be half its current size. If we move the vertices to -42, it would be the other way around. Note that all the values between -42 and 42 are the values where the vertex is supposed to be without overflow. This is the zone we described earlier.
     
    If we were to move the vertices to value 84, then we would enter the territory of the vertex shared by the blue and cyan cubes. This becomes a little dangerous and could result in strange results. In this example, it would lead to the blue surface to completely disappear and be replaced by the red one. The blue voxel would still exist, it would just have a null volume.
     
    And, in the example of these four cubes, if we were to go to a value above 84, it would result in an ill-formed shape because the blue shape would have a negative volume. This would probably create visual artifacts, and we may prevent this situation in the future.
     
    ENCODING CHANGE
     
    One last note for those who are familiar with voxelmancy. In Panacea, we use an encoding of 253 positions (from -126 to 126), which is different than it has been. We used an encoding of 255 positions (it was from -128 to 128 but previous -128 = actual -126). Since there is no exact mapping between the old encoding to the new one, this means that vertices in your constructs may be shifted up to 1mm (vertices at position 0 will not move, but those at extreme values will move the most). This will probably be unnoticeable, but we wanted to err on the side of caution and share this information.
     
    You may wonder, why 253? It is for the reasons explained before, to have those nice -126, -84, -42, 0, 42, 84 and 126 values. The 255 system did not allow for that. We could have chosen 193, so that you could split a voxel in 2, 4, 8, 16, 32, and 64, but that would have meant a huge loss in precision and significantly deformed most constructs. So 253 it is, and you can now split a voxel in 42!
     
    USING THE VPT
     
    There are exactly 253 positions on a single axis including zero that a vertex can be in due to it being divisible over three voxels. Negative 126, 0, and positive 126. As such, the width of one voxel is exactly 84 positions. And each vertex can be moved exactly 1.5 voxel away from the center position.
     
    Thus, the grid on which a vertex is moved is adjustable to a size that covers 1, 2, 4, 7, 14, 21 or 42 positions, 42 being the size of half a voxel. This allows the accurate placement to the finest detail or to quickly scale up and move a vertex by a half, a quarter, a sixth, or a twelfth of a voxel.
     
    See the image below to get an idea of the different size grids available to the VPT.
     
     
    Once selected, the vertex cursor can then be moved with:
    The up, down, left arrow and right Arrow keys for the x- and y-axis.
    The Page Up and Page Down for the z-axis.
    The Home key to send the cursor to the current position of the vertex.
    The End key to send your cursor to the last confirmed coordinates.
    (This also happens by default when you change vertices.)
    The Alt+Home key combination to send the cursor to the centered 0,0,0 coordinates.
    Holding Control+Scroll will adjust the grid size between the available sizes.
    Left-click confirms the placement and moves the selected vertex to the cursor.
     
    The VPT will give you the finest precision possible, no more complex voxelmancy of copy-pasting things around to get a specific shape. You may not use this tool all the time, but when you do you’ll find it exceptionally helpful for fine-tuning.
     
    WHEW, THAT’S A LOTTA INFO!
     
    Still with us? We know there’s a lot of information to process, but we felt it was worthwhile to share the details with our voxelating community members that would appreciate seeing how the sausage is made (so to speak).
     
    We can’t wait to see the cool new stuff Noveans build with the Vertex Precision Tool. As always, we encourage everyone to join the conversation on the forum in this thread. If you have questions about the VPT or want to share your thoughts and tips about voxelmancy in general, that’s the place to go.
     
     
  10. Like
    NQ-Wanderer got a reaction from TannhainRP in DEVBLOG: PRECISION IN BUILDING - discussion thread   
    Greeting Noveans. Let us know what you think about our latest devblog, Precision in Building!
  11. Like
    NQ-Wanderer got a reaction from Luckso in DEVBLOG: CONSTRUCTION SLOTS AND STACKED ELEMENTS   
    It’s the tale of two stackings that were never meant to be, nested organizations and overlapping elements on ships. Both have been problematic, and we’d like to give you an update on the steps we’re taking to correct them.
     
     
    ORGANIZATION CONSTRUCT SLOTS
     
    Several months ago, we suggested a way to address the issue of cascading organizations being created as a way to circumvent the soft limitations of construct and territory numbers. Players raised some valid concerns about the proposal, citing that it would adversely affect how they managed their organizations’ holdings. In consideration of that feedback, we temporarily tabled the proposed changes and went back to the drawing board.
     
    The problem remains and needs to be resolved sooner rather than later to avoid a myriad of issues in the future. DU simply can’t support an infinite number of constructs per player. It’s why we have construct allowances in the first place. We needed a solution that would support community projects for organizations of any size without penalizing those that are prolific. After all, one of the core features of DU is to build lots of cool stuff.
     
     
    THE NEW WAY
     
    The solution we’ve designed will detach construct capacity rights from organizations and put them directly into players’ hands. 
     
    Organizations will now have a base construct capacity of zero.
    The reasoning behind this is to no longer make it a viable option to create countless organizations simply to increase the capacity of constructs available. This will now depend on the next item on the list…
    Each Novean will have 15 assignable organization construct slots, with an additional 10 available from talents.
    This change allows us to scale the maximum number of constructs to the number of players. This can be beneficial to smaller organizations because… 
    Players can assign these slots to any organization of their choosing, whether or not they are a member of the organization.
    We hope to see players use their available organization construct slots to support their organizations and to help support community projects they like. For those who want to support a different organization…
    Noveans can reassign their slots from one organization to another, though this will cause the former organization to lose construct capacity.
    This means that...
    An organization that loses capacity will either need to acquire new slots from players in order to support its infrastructure or reduce its number of constructs.
    If the organization has more constructs than its allotted slots for two weeks, the organization will receive a warning. 
    If the organization does not either reduce its construct count to below its new allocated slots or increase its slot count two weeks after the warning, random constructs from that organization will become abandoned and lose ownership. At that point, any player or organization who has the necessary allotment of construct slots may claim it. 
    This system allows us to maintain a balance in terms of expected constructs present.
     
    Further, to prevent players from trying to circumnavigate the system by reassigning construct slots back and forth every two weeks, there will be a minimum of 30 days before you can reassign the slots away from an organization.
     
     
    USING YOUR TALENTS
     
    Many of you likely used talents to increase an organization's construct capacity. Talents will still play a role as they provide an upper ceiling for a single organization’s capacity; however, these talents have been increased in their capacity, which now allows a single organization to have a far higher construct slot maximum.
     
    Where the old maximum was 275 constructs, the new upper limit will be 1625.
     
    As these changes significantly increase the scale of which these talents previously applied, these talents will be reset at the 0.28 Panacea release.
    Organization Construct Management
    Organization Construct Management Specialization
    Advanced Organization Construct Management Specialization
    We try to limit the resetting of talents as much as we can; however, due to the considerable changes in the way these talents now behave and scale, we feel that refunding these talents is required.
     
     
    FRESH, NEW UI
     
    All the changes revealed above will come with some UI improvements such as:
    A new interface on the organization home page, allowing each Novean to assign construct slots to organizations of their choosing and to see how many slots they have assigned to which organizations.

    A new interface called ‘Constructs’ on each organization page, allowing each organization to have insight on how many slots they have available, who they received them from, when the next construct check is due, a log of slot gains and losses, and what their slot maximum capacity and talent maximum capacity are.
     

     
    Another minor feature we will begin to introduce into some select UI elements is the ability to export lists in JSON format, the first of which can be found in the new organization ‘Constructs’ UI above. It will include a small copy-to-clipboard button, which will copy a JSON formatted string containing a list of all the data available in the column. In the above example, these can be found for:
    Construct Slots: This will return a JSON string of player names, how many slots they have shared, and if they are a member of your organization.
    Construct Check: This will return a JSON string of constructs that have been abandoned due to lack of construct slots, their coordinates at the time of abandonment, and a total count of constructs that have been abandoned.
    Log: This will return a JSON string containing the date it was copied as a unit timestamp, the number of allocation changes, followed by a list of players, how many they have lent to the organization and how many the organization has as that point, along with a Unix timestamp of the transaction.
     
    Following feedback on these export functions, we will consider implementing them for other UI elements such as, for example, the Talents UI.
     
    When the Panacea update launches, it will kick off a 30-day grace period at the end of which the abandonment of constructs will go into effect. Please note that if your organization exceeds its slot capacity, a warning message will be received; however, no abandoning will happen for the first 30 days after Panacea’s release.
     
     
    DISABLING OVERLAPPING ELEMENTS
     
    The stacking of elements on ships is unintended gameplay - aka an exploit - that we have been aware of for a regrettably long time. Though we’ve explored a few different options, including the detection solution we released previously, community feedback prompted us to postpone the disabling of elements until after Panacea’s initial release. 
     
    The revised approach will likely include trials on the Live server without disabling elements in order to measure the impact of the algorithms. We would like to thank everyone who reached out to us with constructive feedback and bug reports of elements that caused problems in specific placements.
     
     
    FEEDBACK WANTED
     
    The forums are the absolute best place to share your feedback with us. Although members of the DU dev team may pop into Discord from time to time, the loose and fluid nature of those chat channels can make it difficult to have an earnest discussion. The forums, on the other hand, are static and much more conversation-friendly. 
     
    All of that said, we hope you’ll join the conversation about this devblog here. 
  12. Like
    NQ-Wanderer got a reaction from TannhainRP in DEVBLOG: PRECISION IN BUILDING   
    In the upcoming 0.28 Panacea update, we will introduce the Vertex Precision Tool (VPT), which adds a whole new way of bringing detail to your creative designs.
     
    This all may sound quite complex initially, but once you get used to the tool it’s quite intuitive. If you’ve been holding back because voxelmancy seemed too complicated, now’s the time to give it a try. By allowing you to simply equip the VPT and move the vertex around on a changeable grid, the process of designing with voxels is greatly simplified and far more user-friendly.
     
    Here’s a brief demonstration of what the VPT looks like and how it’s used:
     
     
    Heads up! The information in this blog leans heavily into the extremely technical side of things. Those who are into voxelmancy will probably dive in with unfettered joy. If building isn’t your jam, you may wish to stop here and get the TL;DR from one of your builder buddies later.
     
    VOXELS DEFINED
     
    Much of what you see in Dual Universe was built by players using voxels. The term “voxel” is very generic, a shortened form of “volume element”. Voxelmancy is an advanced form of building that can be quite complex, and there has always been a gap between building with standard geometric shapes and fine-tuned designs. The VPT aims to bring a game-changing  bridge for the gap between these building styles.
     
    How exactly the voxels are implemented depends a lot on the software that’s being used. In DU, a voxel contains two things: material information and a vertex position information.
     
    The material information is pretty straightforward; it is exactly the same as in a pixelated image where there is a material (think of it as a synonym of “color“) for each little square. We use what we call a uniform grid, meaning that voxels are put next to each other in a 3D grid and all have the same size. For example, on a planet voxels are 1 meter long (1m x 1m x 1m) whereas they can be 25 centimeters long (0.25m x 0.25m x 0.25m) on a user construct. It’s exactly how pixels work in 2D images, and you may already be familiar with these kinds of voxels because they are present in games like Minecraft.
     
    VERTICES POSITIONS
     
    Let’s drill down even deeper into the well of technical stuff.
     
    As stated above, voxels contain material information and a vertex position information. The Vertex Precision Tool doesn’t touch materials, so let’s talk about vertices.
     
    3D geometry is composed of vertices, and those vertices are linked together to form faces that will be rendered on your screen. For instance, take a simple single voxel cube. It is composed of one material, but has eight vertices on the eight corners. Since our voxels in DU store both a material and a vertex position, our “single voxel” here is composed of eight voxels because it takes eight vertices to form a cube!
     
    This is where it starts getting complicated. We can consider that there are two voxel grids, one is the material grid and the other is the vertex position grid, and the two grids are shifted, dual to each other. There are eight vertices around a material, and there are eight materials (we can consider the void as a special kind of material) around a vertex.
     
    So what are we talking about when we talk about a voxel? A little bit of both, depending on the context. Confusing right? We’ll try to be specific and talk about vertices, but remember there is only one vertex per voxel, although one voxel cube is composed of eight vertices (and thus is in reality eight voxels: one with matter and seven without matter.)
     
    Take a look at this picture. It is in 2D because it’s easier to understand (and to draw), but this is the same thing in 3D. This image represents a voxel sphere (more like a circle since we are in 2D).
     

      The dotted lines are the uniform grid that represent the voxels. At the intersection of those dotted lines, you can have a blue dot, representing a material. So, we have our material grid: either emptiness or a blue material. Inside of all of those cells, there may be a vertex. There is a vertex if and only if all four corners are not the same. If one of the corners is blue and another one empty, it means we have some material change here and thus something to see. So we need a vertex to know where we see the surface. On each of those cells, we have a vertex represented. The vertices are then linked together to form the surface.
     
    POSITIONS VALUES
     
    Before the Panacea update, you could only get such a sphere with the sphere tool, but with the VTP you’ll now have the opportunity to change the vertex position manually. This raises the question: what coordinate system do we use?
     
    In theory, we could use an infinite range of values. For example, we could say that the vertex should be at one third (on a given axis) in between the two materials as shown in the grid, so its value (on this axis) could be 0.333333333. It could also be 0.1415926535, or whatever we want.
     
    However, we need to store those vertex positions, and we want to be efficient so that we don’t take too much disk usage so we encode the vertex position (on a given axis) on a single byte. This means we only have 256 different possibilities for a vertex position, but we don’t really need more. A vertex position is a coordinate with three numbers (for the three axes) where all of these numbers are integers (with a maximum 256 different possible integers).
     
    So what are those possible values? Before answering that, we need to consider where a vertex can lie. On the sphere representation drawing, you can see that vertices are inside the zone defined by the four surrounding material points. This is indeed where a vertex should be most of the time, although we may sometimes want to overflow a bit, reach a little further than the vertex is supposed to. This will encroach on the zone of the neighbor voxel, but it does not have to be a problem. We decided that a vertex could lie on its one zone, but also the zone of its direct neighbors. On the 2D schematics above, it means that a vertex can be placed anywhere on the nine squares around it.
     
    A vertex encoding actually encodes three vertice’s positions. We want to have an encoding for all the important positions, the middle of each of the three voxels and their borders. This means that we need a multiple of six. We’ll use 252 as it is very close to 256. Now let’s see this coordinate system in a picture. The picture below represents four simple cubes in voxels (yellow, red, blue and cyan).
     
    We will be talking about the vertex shared by the red and blue cubes. There are actually two of those vertices in 2D, one top and one bottom; let’s talk about the top one. We state that the position it is in in the picture will be 0 (it’s a convention, the one chosen in the Vertex Precision Tool), and above the cubes we showed all the position values this vertex could have
     
     
    So 0 is the position of a vertex in a simple voxel cube. If we move the vertex into position 42 (both the top and bottom vertex of this red-blue junction), then the red rectangle will now be 1.5 times bigger, and the blue rectangle will be half its current size. If we move the vertices to -42, it would be the other way around. Note that all the values between -42 and 42 are the values where the vertex is supposed to be without overflow. This is the zone we described earlier.
     
    If we were to move the vertices to value 84, then we would enter the territory of the vertex shared by the blue and cyan cubes. This becomes a little dangerous and could result in strange results. In this example, it would lead to the blue surface to completely disappear and be replaced by the red one. The blue voxel would still exist, it would just have a null volume.
     
    And, in the example of these four cubes, if we were to go to a value above 84, it would result in an ill-formed shape because the blue shape would have a negative volume. This would probably create visual artifacts, and we may prevent this situation in the future.
     
    ENCODING CHANGE
     
    One last note for those who are familiar with voxelmancy. In Panacea, we use an encoding of 253 positions (from -126 to 126), which is different than it has been. We used an encoding of 255 positions (it was from -128 to 128 but previous -128 = actual -126). Since there is no exact mapping between the old encoding to the new one, this means that vertices in your constructs may be shifted up to 1mm (vertices at position 0 will not move, but those at extreme values will move the most). This will probably be unnoticeable, but we wanted to err on the side of caution and share this information.
     
    You may wonder, why 253? It is for the reasons explained before, to have those nice -126, -84, -42, 0, 42, 84 and 126 values. The 255 system did not allow for that. We could have chosen 193, so that you could split a voxel in 2, 4, 8, 16, 32, and 64, but that would have meant a huge loss in precision and significantly deformed most constructs. So 253 it is, and you can now split a voxel in 42!
     
    USING THE VPT
     
    There are exactly 253 positions on a single axis including zero that a vertex can be in due to it being divisible over three voxels. Negative 126, 0, and positive 126. As such, the width of one voxel is exactly 84 positions. And each vertex can be moved exactly 1.5 voxel away from the center position.
     
    Thus, the grid on which a vertex is moved is adjustable to a size that covers 1, 2, 4, 7, 14, 21 or 42 positions, 42 being the size of half a voxel. This allows the accurate placement to the finest detail or to quickly scale up and move a vertex by a half, a quarter, a sixth, or a twelfth of a voxel.
     
    See the image below to get an idea of the different size grids available to the VPT.
     
     
    Once selected, the vertex cursor can then be moved with:
    The up, down, left arrow and right Arrow keys for the x- and y-axis.
    The Page Up and Page Down for the z-axis.
    The Home key to send the cursor to the current position of the vertex.
    The End key to send your cursor to the last confirmed coordinates.
    (This also happens by default when you change vertices.)
    The Alt+Home key combination to send the cursor to the centered 0,0,0 coordinates.
    Holding Control+Scroll will adjust the grid size between the available sizes.
    Left-click confirms the placement and moves the selected vertex to the cursor.
     
    The VPT will give you the finest precision possible, no more complex voxelmancy of copy-pasting things around to get a specific shape. You may not use this tool all the time, but when you do you’ll find it exceptionally helpful for fine-tuning.
     
    WHEW, THAT’S A LOTTA INFO!
     
    Still with us? We know there’s a lot of information to process, but we felt it was worthwhile to share the details with our voxelating community members that would appreciate seeing how the sausage is made (so to speak).
     
    We can’t wait to see the cool new stuff Noveans build with the Vertex Precision Tool. As always, we encourage everyone to join the conversation on the forum in this thread. If you have questions about the VPT or want to share your thoughts and tips about voxelmancy in general, that’s the place to go.
     
     
  13. Like
    NQ-Wanderer got a reaction from Kurock in DEVBLOG: PRECISION IN BUILDING - discussion thread   
    Greeting Noveans. Let us know what you think about our latest devblog, Precision in Building!
  14. Like
    NQ-Wanderer got a reaction from antanox in DEVBLOG: PRECISION IN BUILDING   
    In the upcoming 0.28 Panacea update, we will introduce the Vertex Precision Tool (VPT), which adds a whole new way of bringing detail to your creative designs.
     
    This all may sound quite complex initially, but once you get used to the tool it’s quite intuitive. If you’ve been holding back because voxelmancy seemed too complicated, now’s the time to give it a try. By allowing you to simply equip the VPT and move the vertex around on a changeable grid, the process of designing with voxels is greatly simplified and far more user-friendly.
     
    Here’s a brief demonstration of what the VPT looks like and how it’s used:
     
     
    Heads up! The information in this blog leans heavily into the extremely technical side of things. Those who are into voxelmancy will probably dive in with unfettered joy. If building isn’t your jam, you may wish to stop here and get the TL;DR from one of your builder buddies later.
     
    VOXELS DEFINED
     
    Much of what you see in Dual Universe was built by players using voxels. The term “voxel” is very generic, a shortened form of “volume element”. Voxelmancy is an advanced form of building that can be quite complex, and there has always been a gap between building with standard geometric shapes and fine-tuned designs. The VPT aims to bring a game-changing  bridge for the gap between these building styles.
     
    How exactly the voxels are implemented depends a lot on the software that’s being used. In DU, a voxel contains two things: material information and a vertex position information.
     
    The material information is pretty straightforward; it is exactly the same as in a pixelated image where there is a material (think of it as a synonym of “color“) for each little square. We use what we call a uniform grid, meaning that voxels are put next to each other in a 3D grid and all have the same size. For example, on a planet voxels are 1 meter long (1m x 1m x 1m) whereas they can be 25 centimeters long (0.25m x 0.25m x 0.25m) on a user construct. It’s exactly how pixels work in 2D images, and you may already be familiar with these kinds of voxels because they are present in games like Minecraft.
     
    VERTICES POSITIONS
     
    Let’s drill down even deeper into the well of technical stuff.
     
    As stated above, voxels contain material information and a vertex position information. The Vertex Precision Tool doesn’t touch materials, so let’s talk about vertices.
     
    3D geometry is composed of vertices, and those vertices are linked together to form faces that will be rendered on your screen. For instance, take a simple single voxel cube. It is composed of one material, but has eight vertices on the eight corners. Since our voxels in DU store both a material and a vertex position, our “single voxel” here is composed of eight voxels because it takes eight vertices to form a cube!
     
    This is where it starts getting complicated. We can consider that there are two voxel grids, one is the material grid and the other is the vertex position grid, and the two grids are shifted, dual to each other. There are eight vertices around a material, and there are eight materials (we can consider the void as a special kind of material) around a vertex.
     
    So what are we talking about when we talk about a voxel? A little bit of both, depending on the context. Confusing right? We’ll try to be specific and talk about vertices, but remember there is only one vertex per voxel, although one voxel cube is composed of eight vertices (and thus is in reality eight voxels: one with matter and seven without matter.)
     
    Take a look at this picture. It is in 2D because it’s easier to understand (and to draw), but this is the same thing in 3D. This image represents a voxel sphere (more like a circle since we are in 2D).
     

      The dotted lines are the uniform grid that represent the voxels. At the intersection of those dotted lines, you can have a blue dot, representing a material. So, we have our material grid: either emptiness or a blue material. Inside of all of those cells, there may be a vertex. There is a vertex if and only if all four corners are not the same. If one of the corners is blue and another one empty, it means we have some material change here and thus something to see. So we need a vertex to know where we see the surface. On each of those cells, we have a vertex represented. The vertices are then linked together to form the surface.
     
    POSITIONS VALUES
     
    Before the Panacea update, you could only get such a sphere with the sphere tool, but with the VTP you’ll now have the opportunity to change the vertex position manually. This raises the question: what coordinate system do we use?
     
    In theory, we could use an infinite range of values. For example, we could say that the vertex should be at one third (on a given axis) in between the two materials as shown in the grid, so its value (on this axis) could be 0.333333333. It could also be 0.1415926535, or whatever we want.
     
    However, we need to store those vertex positions, and we want to be efficient so that we don’t take too much disk usage so we encode the vertex position (on a given axis) on a single byte. This means we only have 256 different possibilities for a vertex position, but we don’t really need more. A vertex position is a coordinate with three numbers (for the three axes) where all of these numbers are integers (with a maximum 256 different possible integers).
     
    So what are those possible values? Before answering that, we need to consider where a vertex can lie. On the sphere representation drawing, you can see that vertices are inside the zone defined by the four surrounding material points. This is indeed where a vertex should be most of the time, although we may sometimes want to overflow a bit, reach a little further than the vertex is supposed to. This will encroach on the zone of the neighbor voxel, but it does not have to be a problem. We decided that a vertex could lie on its one zone, but also the zone of its direct neighbors. On the 2D schematics above, it means that a vertex can be placed anywhere on the nine squares around it.
     
    A vertex encoding actually encodes three vertice’s positions. We want to have an encoding for all the important positions, the middle of each of the three voxels and their borders. This means that we need a multiple of six. We’ll use 252 as it is very close to 256. Now let’s see this coordinate system in a picture. The picture below represents four simple cubes in voxels (yellow, red, blue and cyan).
     
    We will be talking about the vertex shared by the red and blue cubes. There are actually two of those vertices in 2D, one top and one bottom; let’s talk about the top one. We state that the position it is in in the picture will be 0 (it’s a convention, the one chosen in the Vertex Precision Tool), and above the cubes we showed all the position values this vertex could have
     
     
    So 0 is the position of a vertex in a simple voxel cube. If we move the vertex into position 42 (both the top and bottom vertex of this red-blue junction), then the red rectangle will now be 1.5 times bigger, and the blue rectangle will be half its current size. If we move the vertices to -42, it would be the other way around. Note that all the values between -42 and 42 are the values where the vertex is supposed to be without overflow. This is the zone we described earlier.
     
    If we were to move the vertices to value 84, then we would enter the territory of the vertex shared by the blue and cyan cubes. This becomes a little dangerous and could result in strange results. In this example, it would lead to the blue surface to completely disappear and be replaced by the red one. The blue voxel would still exist, it would just have a null volume.
     
    And, in the example of these four cubes, if we were to go to a value above 84, it would result in an ill-formed shape because the blue shape would have a negative volume. This would probably create visual artifacts, and we may prevent this situation in the future.
     
    ENCODING CHANGE
     
    One last note for those who are familiar with voxelmancy. In Panacea, we use an encoding of 253 positions (from -126 to 126), which is different than it has been. We used an encoding of 255 positions (it was from -128 to 128 but previous -128 = actual -126). Since there is no exact mapping between the old encoding to the new one, this means that vertices in your constructs may be shifted up to 1mm (vertices at position 0 will not move, but those at extreme values will move the most). This will probably be unnoticeable, but we wanted to err on the side of caution and share this information.
     
    You may wonder, why 253? It is for the reasons explained before, to have those nice -126, -84, -42, 0, 42, 84 and 126 values. The 255 system did not allow for that. We could have chosen 193, so that you could split a voxel in 2, 4, 8, 16, 32, and 64, but that would have meant a huge loss in precision and significantly deformed most constructs. So 253 it is, and you can now split a voxel in 42!
     
    USING THE VPT
     
    There are exactly 253 positions on a single axis including zero that a vertex can be in due to it being divisible over three voxels. Negative 126, 0, and positive 126. As such, the width of one voxel is exactly 84 positions. And each vertex can be moved exactly 1.5 voxel away from the center position.
     
    Thus, the grid on which a vertex is moved is adjustable to a size that covers 1, 2, 4, 7, 14, 21 or 42 positions, 42 being the size of half a voxel. This allows the accurate placement to the finest detail or to quickly scale up and move a vertex by a half, a quarter, a sixth, or a twelfth of a voxel.
     
    See the image below to get an idea of the different size grids available to the VPT.
     
     
    Once selected, the vertex cursor can then be moved with:
    The up, down, left arrow and right Arrow keys for the x- and y-axis.
    The Page Up and Page Down for the z-axis.
    The Home key to send the cursor to the current position of the vertex.
    The End key to send your cursor to the last confirmed coordinates.
    (This also happens by default when you change vertices.)
    The Alt+Home key combination to send the cursor to the centered 0,0,0 coordinates.
    Holding Control+Scroll will adjust the grid size between the available sizes.
    Left-click confirms the placement and moves the selected vertex to the cursor.
     
    The VPT will give you the finest precision possible, no more complex voxelmancy of copy-pasting things around to get a specific shape. You may not use this tool all the time, but when you do you’ll find it exceptionally helpful for fine-tuning.
     
    WHEW, THAT’S A LOTTA INFO!
     
    Still with us? We know there’s a lot of information to process, but we felt it was worthwhile to share the details with our voxelating community members that would appreciate seeing how the sausage is made (so to speak).
     
    We can’t wait to see the cool new stuff Noveans build with the Vertex Precision Tool. As always, we encourage everyone to join the conversation on the forum in this thread. If you have questions about the VPT or want to share your thoughts and tips about voxelmancy in general, that’s the place to go.
     
     
  15. Like
    NQ-Wanderer got a reaction from Kurock in DEVBLOG: PRECISION IN BUILDING   
    In the upcoming 0.28 Panacea update, we will introduce the Vertex Precision Tool (VPT), which adds a whole new way of bringing detail to your creative designs.
     
    This all may sound quite complex initially, but once you get used to the tool it’s quite intuitive. If you’ve been holding back because voxelmancy seemed too complicated, now’s the time to give it a try. By allowing you to simply equip the VPT and move the vertex around on a changeable grid, the process of designing with voxels is greatly simplified and far more user-friendly.
     
    Here’s a brief demonstration of what the VPT looks like and how it’s used:
     
     
    Heads up! The information in this blog leans heavily into the extremely technical side of things. Those who are into voxelmancy will probably dive in with unfettered joy. If building isn’t your jam, you may wish to stop here and get the TL;DR from one of your builder buddies later.
     
    VOXELS DEFINED
     
    Much of what you see in Dual Universe was built by players using voxels. The term “voxel” is very generic, a shortened form of “volume element”. Voxelmancy is an advanced form of building that can be quite complex, and there has always been a gap between building with standard geometric shapes and fine-tuned designs. The VPT aims to bring a game-changing  bridge for the gap between these building styles.
     
    How exactly the voxels are implemented depends a lot on the software that’s being used. In DU, a voxel contains two things: material information and a vertex position information.
     
    The material information is pretty straightforward; it is exactly the same as in a pixelated image where there is a material (think of it as a synonym of “color“) for each little square. We use what we call a uniform grid, meaning that voxels are put next to each other in a 3D grid and all have the same size. For example, on a planet voxels are 1 meter long (1m x 1m x 1m) whereas they can be 25 centimeters long (0.25m x 0.25m x 0.25m) on a user construct. It’s exactly how pixels work in 2D images, and you may already be familiar with these kinds of voxels because they are present in games like Minecraft.
     
    VERTICES POSITIONS
     
    Let’s drill down even deeper into the well of technical stuff.
     
    As stated above, voxels contain material information and a vertex position information. The Vertex Precision Tool doesn’t touch materials, so let’s talk about vertices.
     
    3D geometry is composed of vertices, and those vertices are linked together to form faces that will be rendered on your screen. For instance, take a simple single voxel cube. It is composed of one material, but has eight vertices on the eight corners. Since our voxels in DU store both a material and a vertex position, our “single voxel” here is composed of eight voxels because it takes eight vertices to form a cube!
     
    This is where it starts getting complicated. We can consider that there are two voxel grids, one is the material grid and the other is the vertex position grid, and the two grids are shifted, dual to each other. There are eight vertices around a material, and there are eight materials (we can consider the void as a special kind of material) around a vertex.
     
    So what are we talking about when we talk about a voxel? A little bit of both, depending on the context. Confusing right? We’ll try to be specific and talk about vertices, but remember there is only one vertex per voxel, although one voxel cube is composed of eight vertices (and thus is in reality eight voxels: one with matter and seven without matter.)
     
    Take a look at this picture. It is in 2D because it’s easier to understand (and to draw), but this is the same thing in 3D. This image represents a voxel sphere (more like a circle since we are in 2D).
     

      The dotted lines are the uniform grid that represent the voxels. At the intersection of those dotted lines, you can have a blue dot, representing a material. So, we have our material grid: either emptiness or a blue material. Inside of all of those cells, there may be a vertex. There is a vertex if and only if all four corners are not the same. If one of the corners is blue and another one empty, it means we have some material change here and thus something to see. So we need a vertex to know where we see the surface. On each of those cells, we have a vertex represented. The vertices are then linked together to form the surface.
     
    POSITIONS VALUES
     
    Before the Panacea update, you could only get such a sphere with the sphere tool, but with the VTP you’ll now have the opportunity to change the vertex position manually. This raises the question: what coordinate system do we use?
     
    In theory, we could use an infinite range of values. For example, we could say that the vertex should be at one third (on a given axis) in between the two materials as shown in the grid, so its value (on this axis) could be 0.333333333. It could also be 0.1415926535, or whatever we want.
     
    However, we need to store those vertex positions, and we want to be efficient so that we don’t take too much disk usage so we encode the vertex position (on a given axis) on a single byte. This means we only have 256 different possibilities for a vertex position, but we don’t really need more. A vertex position is a coordinate with three numbers (for the three axes) where all of these numbers are integers (with a maximum 256 different possible integers).
     
    So what are those possible values? Before answering that, we need to consider where a vertex can lie. On the sphere representation drawing, you can see that vertices are inside the zone defined by the four surrounding material points. This is indeed where a vertex should be most of the time, although we may sometimes want to overflow a bit, reach a little further than the vertex is supposed to. This will encroach on the zone of the neighbor voxel, but it does not have to be a problem. We decided that a vertex could lie on its one zone, but also the zone of its direct neighbors. On the 2D schematics above, it means that a vertex can be placed anywhere on the nine squares around it.
     
    A vertex encoding actually encodes three vertice’s positions. We want to have an encoding for all the important positions, the middle of each of the three voxels and their borders. This means that we need a multiple of six. We’ll use 252 as it is very close to 256. Now let’s see this coordinate system in a picture. The picture below represents four simple cubes in voxels (yellow, red, blue and cyan).
     
    We will be talking about the vertex shared by the red and blue cubes. There are actually two of those vertices in 2D, one top and one bottom; let’s talk about the top one. We state that the position it is in in the picture will be 0 (it’s a convention, the one chosen in the Vertex Precision Tool), and above the cubes we showed all the position values this vertex could have
     
     
    So 0 is the position of a vertex in a simple voxel cube. If we move the vertex into position 42 (both the top and bottom vertex of this red-blue junction), then the red rectangle will now be 1.5 times bigger, and the blue rectangle will be half its current size. If we move the vertices to -42, it would be the other way around. Note that all the values between -42 and 42 are the values where the vertex is supposed to be without overflow. This is the zone we described earlier.
     
    If we were to move the vertices to value 84, then we would enter the territory of the vertex shared by the blue and cyan cubes. This becomes a little dangerous and could result in strange results. In this example, it would lead to the blue surface to completely disappear and be replaced by the red one. The blue voxel would still exist, it would just have a null volume.
     
    And, in the example of these four cubes, if we were to go to a value above 84, it would result in an ill-formed shape because the blue shape would have a negative volume. This would probably create visual artifacts, and we may prevent this situation in the future.
     
    ENCODING CHANGE
     
    One last note for those who are familiar with voxelmancy. In Panacea, we use an encoding of 253 positions (from -126 to 126), which is different than it has been. We used an encoding of 255 positions (it was from -128 to 128 but previous -128 = actual -126). Since there is no exact mapping between the old encoding to the new one, this means that vertices in your constructs may be shifted up to 1mm (vertices at position 0 will not move, but those at extreme values will move the most). This will probably be unnoticeable, but we wanted to err on the side of caution and share this information.
     
    You may wonder, why 253? It is for the reasons explained before, to have those nice -126, -84, -42, 0, 42, 84 and 126 values. The 255 system did not allow for that. We could have chosen 193, so that you could split a voxel in 2, 4, 8, 16, 32, and 64, but that would have meant a huge loss in precision and significantly deformed most constructs. So 253 it is, and you can now split a voxel in 42!
     
    USING THE VPT
     
    There are exactly 253 positions on a single axis including zero that a vertex can be in due to it being divisible over three voxels. Negative 126, 0, and positive 126. As such, the width of one voxel is exactly 84 positions. And each vertex can be moved exactly 1.5 voxel away from the center position.
     
    Thus, the grid on which a vertex is moved is adjustable to a size that covers 1, 2, 4, 7, 14, 21 or 42 positions, 42 being the size of half a voxel. This allows the accurate placement to the finest detail or to quickly scale up and move a vertex by a half, a quarter, a sixth, or a twelfth of a voxel.
     
    See the image below to get an idea of the different size grids available to the VPT.
     
     
    Once selected, the vertex cursor can then be moved with:
    The up, down, left arrow and right Arrow keys for the x- and y-axis.
    The Page Up and Page Down for the z-axis.
    The Home key to send the cursor to the current position of the vertex.
    The End key to send your cursor to the last confirmed coordinates.
    (This also happens by default when you change vertices.)
    The Alt+Home key combination to send the cursor to the centered 0,0,0 coordinates.
    Holding Control+Scroll will adjust the grid size between the available sizes.
    Left-click confirms the placement and moves the selected vertex to the cursor.
     
    The VPT will give you the finest precision possible, no more complex voxelmancy of copy-pasting things around to get a specific shape. You may not use this tool all the time, but when you do you’ll find it exceptionally helpful for fine-tuning.
     
    WHEW, THAT’S A LOTTA INFO!
     
    Still with us? We know there’s a lot of information to process, but we felt it was worthwhile to share the details with our voxelating community members that would appreciate seeing how the sausage is made (so to speak).
     
    We can’t wait to see the cool new stuff Noveans build with the Vertex Precision Tool. As always, we encourage everyone to join the conversation on the forum in this thread. If you have questions about the VPT or want to share your thoughts and tips about voxelmancy in general, that’s the place to go.
     
     
  16. Like
    NQ-Wanderer got a reaction from Marrokev in DEVBLOG: PRECISION IN BUILDING   
    In the upcoming 0.28 Panacea update, we will introduce the Vertex Precision Tool (VPT), which adds a whole new way of bringing detail to your creative designs.
     
    This all may sound quite complex initially, but once you get used to the tool it’s quite intuitive. If you’ve been holding back because voxelmancy seemed too complicated, now’s the time to give it a try. By allowing you to simply equip the VPT and move the vertex around on a changeable grid, the process of designing with voxels is greatly simplified and far more user-friendly.
     
    Here’s a brief demonstration of what the VPT looks like and how it’s used:
     
     
    Heads up! The information in this blog leans heavily into the extremely technical side of things. Those who are into voxelmancy will probably dive in with unfettered joy. If building isn’t your jam, you may wish to stop here and get the TL;DR from one of your builder buddies later.
     
    VOXELS DEFINED
     
    Much of what you see in Dual Universe was built by players using voxels. The term “voxel” is very generic, a shortened form of “volume element”. Voxelmancy is an advanced form of building that can be quite complex, and there has always been a gap between building with standard geometric shapes and fine-tuned designs. The VPT aims to bring a game-changing  bridge for the gap between these building styles.
     
    How exactly the voxels are implemented depends a lot on the software that’s being used. In DU, a voxel contains two things: material information and a vertex position information.
     
    The material information is pretty straightforward; it is exactly the same as in a pixelated image where there is a material (think of it as a synonym of “color“) for each little square. We use what we call a uniform grid, meaning that voxels are put next to each other in a 3D grid and all have the same size. For example, on a planet voxels are 1 meter long (1m x 1m x 1m) whereas they can be 25 centimeters long (0.25m x 0.25m x 0.25m) on a user construct. It’s exactly how pixels work in 2D images, and you may already be familiar with these kinds of voxels because they are present in games like Minecraft.
     
    VERTICES POSITIONS
     
    Let’s drill down even deeper into the well of technical stuff.
     
    As stated above, voxels contain material information and a vertex position information. The Vertex Precision Tool doesn’t touch materials, so let’s talk about vertices.
     
    3D geometry is composed of vertices, and those vertices are linked together to form faces that will be rendered on your screen. For instance, take a simple single voxel cube. It is composed of one material, but has eight vertices on the eight corners. Since our voxels in DU store both a material and a vertex position, our “single voxel” here is composed of eight voxels because it takes eight vertices to form a cube!
     
    This is where it starts getting complicated. We can consider that there are two voxel grids, one is the material grid and the other is the vertex position grid, and the two grids are shifted, dual to each other. There are eight vertices around a material, and there are eight materials (we can consider the void as a special kind of material) around a vertex.
     
    So what are we talking about when we talk about a voxel? A little bit of both, depending on the context. Confusing right? We’ll try to be specific and talk about vertices, but remember there is only one vertex per voxel, although one voxel cube is composed of eight vertices (and thus is in reality eight voxels: one with matter and seven without matter.)
     
    Take a look at this picture. It is in 2D because it’s easier to understand (and to draw), but this is the same thing in 3D. This image represents a voxel sphere (more like a circle since we are in 2D).
     

      The dotted lines are the uniform grid that represent the voxels. At the intersection of those dotted lines, you can have a blue dot, representing a material. So, we have our material grid: either emptiness or a blue material. Inside of all of those cells, there may be a vertex. There is a vertex if and only if all four corners are not the same. If one of the corners is blue and another one empty, it means we have some material change here and thus something to see. So we need a vertex to know where we see the surface. On each of those cells, we have a vertex represented. The vertices are then linked together to form the surface.
     
    POSITIONS VALUES
     
    Before the Panacea update, you could only get such a sphere with the sphere tool, but with the VTP you’ll now have the opportunity to change the vertex position manually. This raises the question: what coordinate system do we use?
     
    In theory, we could use an infinite range of values. For example, we could say that the vertex should be at one third (on a given axis) in between the two materials as shown in the grid, so its value (on this axis) could be 0.333333333. It could also be 0.1415926535, or whatever we want.
     
    However, we need to store those vertex positions, and we want to be efficient so that we don’t take too much disk usage so we encode the vertex position (on a given axis) on a single byte. This means we only have 256 different possibilities for a vertex position, but we don’t really need more. A vertex position is a coordinate with three numbers (for the three axes) where all of these numbers are integers (with a maximum 256 different possible integers).
     
    So what are those possible values? Before answering that, we need to consider where a vertex can lie. On the sphere representation drawing, you can see that vertices are inside the zone defined by the four surrounding material points. This is indeed where a vertex should be most of the time, although we may sometimes want to overflow a bit, reach a little further than the vertex is supposed to. This will encroach on the zone of the neighbor voxel, but it does not have to be a problem. We decided that a vertex could lie on its one zone, but also the zone of its direct neighbors. On the 2D schematics above, it means that a vertex can be placed anywhere on the nine squares around it.
     
    A vertex encoding actually encodes three vertice’s positions. We want to have an encoding for all the important positions, the middle of each of the three voxels and their borders. This means that we need a multiple of six. We’ll use 252 as it is very close to 256. Now let’s see this coordinate system in a picture. The picture below represents four simple cubes in voxels (yellow, red, blue and cyan).
     
    We will be talking about the vertex shared by the red and blue cubes. There are actually two of those vertices in 2D, one top and one bottom; let’s talk about the top one. We state that the position it is in in the picture will be 0 (it’s a convention, the one chosen in the Vertex Precision Tool), and above the cubes we showed all the position values this vertex could have
     
     
    So 0 is the position of a vertex in a simple voxel cube. If we move the vertex into position 42 (both the top and bottom vertex of this red-blue junction), then the red rectangle will now be 1.5 times bigger, and the blue rectangle will be half its current size. If we move the vertices to -42, it would be the other way around. Note that all the values between -42 and 42 are the values where the vertex is supposed to be without overflow. This is the zone we described earlier.
     
    If we were to move the vertices to value 84, then we would enter the territory of the vertex shared by the blue and cyan cubes. This becomes a little dangerous and could result in strange results. In this example, it would lead to the blue surface to completely disappear and be replaced by the red one. The blue voxel would still exist, it would just have a null volume.
     
    And, in the example of these four cubes, if we were to go to a value above 84, it would result in an ill-formed shape because the blue shape would have a negative volume. This would probably create visual artifacts, and we may prevent this situation in the future.
     
    ENCODING CHANGE
     
    One last note for those who are familiar with voxelmancy. In Panacea, we use an encoding of 253 positions (from -126 to 126), which is different than it has been. We used an encoding of 255 positions (it was from -128 to 128 but previous -128 = actual -126). Since there is no exact mapping between the old encoding to the new one, this means that vertices in your constructs may be shifted up to 1mm (vertices at position 0 will not move, but those at extreme values will move the most). This will probably be unnoticeable, but we wanted to err on the side of caution and share this information.
     
    You may wonder, why 253? It is for the reasons explained before, to have those nice -126, -84, -42, 0, 42, 84 and 126 values. The 255 system did not allow for that. We could have chosen 193, so that you could split a voxel in 2, 4, 8, 16, 32, and 64, but that would have meant a huge loss in precision and significantly deformed most constructs. So 253 it is, and you can now split a voxel in 42!
     
    USING THE VPT
     
    There are exactly 253 positions on a single axis including zero that a vertex can be in due to it being divisible over three voxels. Negative 126, 0, and positive 126. As such, the width of one voxel is exactly 84 positions. And each vertex can be moved exactly 1.5 voxel away from the center position.
     
    Thus, the grid on which a vertex is moved is adjustable to a size that covers 1, 2, 4, 7, 14, 21 or 42 positions, 42 being the size of half a voxel. This allows the accurate placement to the finest detail or to quickly scale up and move a vertex by a half, a quarter, a sixth, or a twelfth of a voxel.
     
    See the image below to get an idea of the different size grids available to the VPT.
     
     
    Once selected, the vertex cursor can then be moved with:
    The up, down, left arrow and right Arrow keys for the x- and y-axis.
    The Page Up and Page Down for the z-axis.
    The Home key to send the cursor to the current position of the vertex.
    The End key to send your cursor to the last confirmed coordinates.
    (This also happens by default when you change vertices.)
    The Alt+Home key combination to send the cursor to the centered 0,0,0 coordinates.
    Holding Control+Scroll will adjust the grid size between the available sizes.
    Left-click confirms the placement and moves the selected vertex to the cursor.
     
    The VPT will give you the finest precision possible, no more complex voxelmancy of copy-pasting things around to get a specific shape. You may not use this tool all the time, but when you do you’ll find it exceptionally helpful for fine-tuning.
     
    WHEW, THAT’S A LOTTA INFO!
     
    Still with us? We know there’s a lot of information to process, but we felt it was worthwhile to share the details with our voxelating community members that would appreciate seeing how the sausage is made (so to speak).
     
    We can’t wait to see the cool new stuff Noveans build with the Vertex Precision Tool. As always, we encourage everyone to join the conversation on the forum in this thread. If you have questions about the VPT or want to share your thoughts and tips about voxelmancy in general, that’s the place to go.
     
     
  17. Like
    NQ-Wanderer got a reaction from BiGEdge in DEVBLOG: PRECISION IN BUILDING   
    In the upcoming 0.28 Panacea update, we will introduce the Vertex Precision Tool (VPT), which adds a whole new way of bringing detail to your creative designs.
     
    This all may sound quite complex initially, but once you get used to the tool it’s quite intuitive. If you’ve been holding back because voxelmancy seemed too complicated, now’s the time to give it a try. By allowing you to simply equip the VPT and move the vertex around on a changeable grid, the process of designing with voxels is greatly simplified and far more user-friendly.
     
    Here’s a brief demonstration of what the VPT looks like and how it’s used:
     
     
    Heads up! The information in this blog leans heavily into the extremely technical side of things. Those who are into voxelmancy will probably dive in with unfettered joy. If building isn’t your jam, you may wish to stop here and get the TL;DR from one of your builder buddies later.
     
    VOXELS DEFINED
     
    Much of what you see in Dual Universe was built by players using voxels. The term “voxel” is very generic, a shortened form of “volume element”. Voxelmancy is an advanced form of building that can be quite complex, and there has always been a gap between building with standard geometric shapes and fine-tuned designs. The VPT aims to bring a game-changing  bridge for the gap between these building styles.
     
    How exactly the voxels are implemented depends a lot on the software that’s being used. In DU, a voxel contains two things: material information and a vertex position information.
     
    The material information is pretty straightforward; it is exactly the same as in a pixelated image where there is a material (think of it as a synonym of “color“) for each little square. We use what we call a uniform grid, meaning that voxels are put next to each other in a 3D grid and all have the same size. For example, on a planet voxels are 1 meter long (1m x 1m x 1m) whereas they can be 25 centimeters long (0.25m x 0.25m x 0.25m) on a user construct. It’s exactly how pixels work in 2D images, and you may already be familiar with these kinds of voxels because they are present in games like Minecraft.
     
    VERTICES POSITIONS
     
    Let’s drill down even deeper into the well of technical stuff.
     
    As stated above, voxels contain material information and a vertex position information. The Vertex Precision Tool doesn’t touch materials, so let’s talk about vertices.
     
    3D geometry is composed of vertices, and those vertices are linked together to form faces that will be rendered on your screen. For instance, take a simple single voxel cube. It is composed of one material, but has eight vertices on the eight corners. Since our voxels in DU store both a material and a vertex position, our “single voxel” here is composed of eight voxels because it takes eight vertices to form a cube!
     
    This is where it starts getting complicated. We can consider that there are two voxel grids, one is the material grid and the other is the vertex position grid, and the two grids are shifted, dual to each other. There are eight vertices around a material, and there are eight materials (we can consider the void as a special kind of material) around a vertex.
     
    So what are we talking about when we talk about a voxel? A little bit of both, depending on the context. Confusing right? We’ll try to be specific and talk about vertices, but remember there is only one vertex per voxel, although one voxel cube is composed of eight vertices (and thus is in reality eight voxels: one with matter and seven without matter.)
     
    Take a look at this picture. It is in 2D because it’s easier to understand (and to draw), but this is the same thing in 3D. This image represents a voxel sphere (more like a circle since we are in 2D).
     

      The dotted lines are the uniform grid that represent the voxels. At the intersection of those dotted lines, you can have a blue dot, representing a material. So, we have our material grid: either emptiness or a blue material. Inside of all of those cells, there may be a vertex. There is a vertex if and only if all four corners are not the same. If one of the corners is blue and another one empty, it means we have some material change here and thus something to see. So we need a vertex to know where we see the surface. On each of those cells, we have a vertex represented. The vertices are then linked together to form the surface.
     
    POSITIONS VALUES
     
    Before the Panacea update, you could only get such a sphere with the sphere tool, but with the VTP you’ll now have the opportunity to change the vertex position manually. This raises the question: what coordinate system do we use?
     
    In theory, we could use an infinite range of values. For example, we could say that the vertex should be at one third (on a given axis) in between the two materials as shown in the grid, so its value (on this axis) could be 0.333333333. It could also be 0.1415926535, or whatever we want.
     
    However, we need to store those vertex positions, and we want to be efficient so that we don’t take too much disk usage so we encode the vertex position (on a given axis) on a single byte. This means we only have 256 different possibilities for a vertex position, but we don’t really need more. A vertex position is a coordinate with three numbers (for the three axes) where all of these numbers are integers (with a maximum 256 different possible integers).
     
    So what are those possible values? Before answering that, we need to consider where a vertex can lie. On the sphere representation drawing, you can see that vertices are inside the zone defined by the four surrounding material points. This is indeed where a vertex should be most of the time, although we may sometimes want to overflow a bit, reach a little further than the vertex is supposed to. This will encroach on the zone of the neighbor voxel, but it does not have to be a problem. We decided that a vertex could lie on its one zone, but also the zone of its direct neighbors. On the 2D schematics above, it means that a vertex can be placed anywhere on the nine squares around it.
     
    A vertex encoding actually encodes three vertice’s positions. We want to have an encoding for all the important positions, the middle of each of the three voxels and their borders. This means that we need a multiple of six. We’ll use 252 as it is very close to 256. Now let’s see this coordinate system in a picture. The picture below represents four simple cubes in voxels (yellow, red, blue and cyan).
     
    We will be talking about the vertex shared by the red and blue cubes. There are actually two of those vertices in 2D, one top and one bottom; let’s talk about the top one. We state that the position it is in in the picture will be 0 (it’s a convention, the one chosen in the Vertex Precision Tool), and above the cubes we showed all the position values this vertex could have
     
     
    So 0 is the position of a vertex in a simple voxel cube. If we move the vertex into position 42 (both the top and bottom vertex of this red-blue junction), then the red rectangle will now be 1.5 times bigger, and the blue rectangle will be half its current size. If we move the vertices to -42, it would be the other way around. Note that all the values between -42 and 42 are the values where the vertex is supposed to be without overflow. This is the zone we described earlier.
     
    If we were to move the vertices to value 84, then we would enter the territory of the vertex shared by the blue and cyan cubes. This becomes a little dangerous and could result in strange results. In this example, it would lead to the blue surface to completely disappear and be replaced by the red one. The blue voxel would still exist, it would just have a null volume.
     
    And, in the example of these four cubes, if we were to go to a value above 84, it would result in an ill-formed shape because the blue shape would have a negative volume. This would probably create visual artifacts, and we may prevent this situation in the future.
     
    ENCODING CHANGE
     
    One last note for those who are familiar with voxelmancy. In Panacea, we use an encoding of 253 positions (from -126 to 126), which is different than it has been. We used an encoding of 255 positions (it was from -128 to 128 but previous -128 = actual -126). Since there is no exact mapping between the old encoding to the new one, this means that vertices in your constructs may be shifted up to 1mm (vertices at position 0 will not move, but those at extreme values will move the most). This will probably be unnoticeable, but we wanted to err on the side of caution and share this information.
     
    You may wonder, why 253? It is for the reasons explained before, to have those nice -126, -84, -42, 0, 42, 84 and 126 values. The 255 system did not allow for that. We could have chosen 193, so that you could split a voxel in 2, 4, 8, 16, 32, and 64, but that would have meant a huge loss in precision and significantly deformed most constructs. So 253 it is, and you can now split a voxel in 42!
     
    USING THE VPT
     
    There are exactly 253 positions on a single axis including zero that a vertex can be in due to it being divisible over three voxels. Negative 126, 0, and positive 126. As such, the width of one voxel is exactly 84 positions. And each vertex can be moved exactly 1.5 voxel away from the center position.
     
    Thus, the grid on which a vertex is moved is adjustable to a size that covers 1, 2, 4, 7, 14, 21 or 42 positions, 42 being the size of half a voxel. This allows the accurate placement to the finest detail or to quickly scale up and move a vertex by a half, a quarter, a sixth, or a twelfth of a voxel.
     
    See the image below to get an idea of the different size grids available to the VPT.
     
     
    Once selected, the vertex cursor can then be moved with:
    The up, down, left arrow and right Arrow keys for the x- and y-axis.
    The Page Up and Page Down for the z-axis.
    The Home key to send the cursor to the current position of the vertex.
    The End key to send your cursor to the last confirmed coordinates.
    (This also happens by default when you change vertices.)
    The Alt+Home key combination to send the cursor to the centered 0,0,0 coordinates.
    Holding Control+Scroll will adjust the grid size between the available sizes.
    Left-click confirms the placement and moves the selected vertex to the cursor.
     
    The VPT will give you the finest precision possible, no more complex voxelmancy of copy-pasting things around to get a specific shape. You may not use this tool all the time, but when you do you’ll find it exceptionally helpful for fine-tuning.
     
    WHEW, THAT’S A LOTTA INFO!
     
    Still with us? We know there’s a lot of information to process, but we felt it was worthwhile to share the details with our voxelating community members that would appreciate seeing how the sausage is made (so to speak).
     
    We can’t wait to see the cool new stuff Noveans build with the Vertex Precision Tool. As always, we encourage everyone to join the conversation on the forum in this thread. If you have questions about the VPT or want to share your thoughts and tips about voxelmancy in general, that’s the place to go.
     
     
  18. Like
    NQ-Wanderer got a reaction from Eviltek2099 in DEVBLOG: PRECISION IN BUILDING - discussion thread   
    Greeting Noveans. Let us know what you think about our latest devblog, Precision in Building!
  19. Like
    NQ-Wanderer got a reaction from Koriandah in DEVBLOG: PRECISION IN BUILDING - discussion thread   
    Greeting Noveans. Let us know what you think about our latest devblog, Precision in Building!
  20. Like
    NQ-Wanderer got a reaction from Jeronimo in DEVBLOG: PRECISION IN BUILDING   
    In the upcoming 0.28 Panacea update, we will introduce the Vertex Precision Tool (VPT), which adds a whole new way of bringing detail to your creative designs.
     
    This all may sound quite complex initially, but once you get used to the tool it’s quite intuitive. If you’ve been holding back because voxelmancy seemed too complicated, now’s the time to give it a try. By allowing you to simply equip the VPT and move the vertex around on a changeable grid, the process of designing with voxels is greatly simplified and far more user-friendly.
     
    Here’s a brief demonstration of what the VPT looks like and how it’s used:
     
     
    Heads up! The information in this blog leans heavily into the extremely technical side of things. Those who are into voxelmancy will probably dive in with unfettered joy. If building isn’t your jam, you may wish to stop here and get the TL;DR from one of your builder buddies later.
     
    VOXELS DEFINED
     
    Much of what you see in Dual Universe was built by players using voxels. The term “voxel” is very generic, a shortened form of “volume element”. Voxelmancy is an advanced form of building that can be quite complex, and there has always been a gap between building with standard geometric shapes and fine-tuned designs. The VPT aims to bring a game-changing  bridge for the gap between these building styles.
     
    How exactly the voxels are implemented depends a lot on the software that’s being used. In DU, a voxel contains two things: material information and a vertex position information.
     
    The material information is pretty straightforward; it is exactly the same as in a pixelated image where there is a material (think of it as a synonym of “color“) for each little square. We use what we call a uniform grid, meaning that voxels are put next to each other in a 3D grid and all have the same size. For example, on a planet voxels are 1 meter long (1m x 1m x 1m) whereas they can be 25 centimeters long (0.25m x 0.25m x 0.25m) on a user construct. It’s exactly how pixels work in 2D images, and you may already be familiar with these kinds of voxels because they are present in games like Minecraft.
     
    VERTICES POSITIONS
     
    Let’s drill down even deeper into the well of technical stuff.
     
    As stated above, voxels contain material information and a vertex position information. The Vertex Precision Tool doesn’t touch materials, so let’s talk about vertices.
     
    3D geometry is composed of vertices, and those vertices are linked together to form faces that will be rendered on your screen. For instance, take a simple single voxel cube. It is composed of one material, but has eight vertices on the eight corners. Since our voxels in DU store both a material and a vertex position, our “single voxel” here is composed of eight voxels because it takes eight vertices to form a cube!
     
    This is where it starts getting complicated. We can consider that there are two voxel grids, one is the material grid and the other is the vertex position grid, and the two grids are shifted, dual to each other. There are eight vertices around a material, and there are eight materials (we can consider the void as a special kind of material) around a vertex.
     
    So what are we talking about when we talk about a voxel? A little bit of both, depending on the context. Confusing right? We’ll try to be specific and talk about vertices, but remember there is only one vertex per voxel, although one voxel cube is composed of eight vertices (and thus is in reality eight voxels: one with matter and seven without matter.)
     
    Take a look at this picture. It is in 2D because it’s easier to understand (and to draw), but this is the same thing in 3D. This image represents a voxel sphere (more like a circle since we are in 2D).
     

      The dotted lines are the uniform grid that represent the voxels. At the intersection of those dotted lines, you can have a blue dot, representing a material. So, we have our material grid: either emptiness or a blue material. Inside of all of those cells, there may be a vertex. There is a vertex if and only if all four corners are not the same. If one of the corners is blue and another one empty, it means we have some material change here and thus something to see. So we need a vertex to know where we see the surface. On each of those cells, we have a vertex represented. The vertices are then linked together to form the surface.
     
    POSITIONS VALUES
     
    Before the Panacea update, you could only get such a sphere with the sphere tool, but with the VTP you’ll now have the opportunity to change the vertex position manually. This raises the question: what coordinate system do we use?
     
    In theory, we could use an infinite range of values. For example, we could say that the vertex should be at one third (on a given axis) in between the two materials as shown in the grid, so its value (on this axis) could be 0.333333333. It could also be 0.1415926535, or whatever we want.
     
    However, we need to store those vertex positions, and we want to be efficient so that we don’t take too much disk usage so we encode the vertex position (on a given axis) on a single byte. This means we only have 256 different possibilities for a vertex position, but we don’t really need more. A vertex position is a coordinate with three numbers (for the three axes) where all of these numbers are integers (with a maximum 256 different possible integers).
     
    So what are those possible values? Before answering that, we need to consider where a vertex can lie. On the sphere representation drawing, you can see that vertices are inside the zone defined by the four surrounding material points. This is indeed where a vertex should be most of the time, although we may sometimes want to overflow a bit, reach a little further than the vertex is supposed to. This will encroach on the zone of the neighbor voxel, but it does not have to be a problem. We decided that a vertex could lie on its one zone, but also the zone of its direct neighbors. On the 2D schematics above, it means that a vertex can be placed anywhere on the nine squares around it.
     
    A vertex encoding actually encodes three vertice’s positions. We want to have an encoding for all the important positions, the middle of each of the three voxels and their borders. This means that we need a multiple of six. We’ll use 252 as it is very close to 256. Now let’s see this coordinate system in a picture. The picture below represents four simple cubes in voxels (yellow, red, blue and cyan).
     
    We will be talking about the vertex shared by the red and blue cubes. There are actually two of those vertices in 2D, one top and one bottom; let’s talk about the top one. We state that the position it is in in the picture will be 0 (it’s a convention, the one chosen in the Vertex Precision Tool), and above the cubes we showed all the position values this vertex could have
     
     
    So 0 is the position of a vertex in a simple voxel cube. If we move the vertex into position 42 (both the top and bottom vertex of this red-blue junction), then the red rectangle will now be 1.5 times bigger, and the blue rectangle will be half its current size. If we move the vertices to -42, it would be the other way around. Note that all the values between -42 and 42 are the values where the vertex is supposed to be without overflow. This is the zone we described earlier.
     
    If we were to move the vertices to value 84, then we would enter the territory of the vertex shared by the blue and cyan cubes. This becomes a little dangerous and could result in strange results. In this example, it would lead to the blue surface to completely disappear and be replaced by the red one. The blue voxel would still exist, it would just have a null volume.
     
    And, in the example of these four cubes, if we were to go to a value above 84, it would result in an ill-formed shape because the blue shape would have a negative volume. This would probably create visual artifacts, and we may prevent this situation in the future.
     
    ENCODING CHANGE
     
    One last note for those who are familiar with voxelmancy. In Panacea, we use an encoding of 253 positions (from -126 to 126), which is different than it has been. We used an encoding of 255 positions (it was from -128 to 128 but previous -128 = actual -126). Since there is no exact mapping between the old encoding to the new one, this means that vertices in your constructs may be shifted up to 1mm (vertices at position 0 will not move, but those at extreme values will move the most). This will probably be unnoticeable, but we wanted to err on the side of caution and share this information.
     
    You may wonder, why 253? It is for the reasons explained before, to have those nice -126, -84, -42, 0, 42, 84 and 126 values. The 255 system did not allow for that. We could have chosen 193, so that you could split a voxel in 2, 4, 8, 16, 32, and 64, but that would have meant a huge loss in precision and significantly deformed most constructs. So 253 it is, and you can now split a voxel in 42!
     
    USING THE VPT
     
    There are exactly 253 positions on a single axis including zero that a vertex can be in due to it being divisible over three voxels. Negative 126, 0, and positive 126. As such, the width of one voxel is exactly 84 positions. And each vertex can be moved exactly 1.5 voxel away from the center position.
     
    Thus, the grid on which a vertex is moved is adjustable to a size that covers 1, 2, 4, 7, 14, 21 or 42 positions, 42 being the size of half a voxel. This allows the accurate placement to the finest detail or to quickly scale up and move a vertex by a half, a quarter, a sixth, or a twelfth of a voxel.
     
    See the image below to get an idea of the different size grids available to the VPT.
     
     
    Once selected, the vertex cursor can then be moved with:
    The up, down, left arrow and right Arrow keys for the x- and y-axis.
    The Page Up and Page Down for the z-axis.
    The Home key to send the cursor to the current position of the vertex.
    The End key to send your cursor to the last confirmed coordinates.
    (This also happens by default when you change vertices.)
    The Alt+Home key combination to send the cursor to the centered 0,0,0 coordinates.
    Holding Control+Scroll will adjust the grid size between the available sizes.
    Left-click confirms the placement and moves the selected vertex to the cursor.
     
    The VPT will give you the finest precision possible, no more complex voxelmancy of copy-pasting things around to get a specific shape. You may not use this tool all the time, but when you do you’ll find it exceptionally helpful for fine-tuning.
     
    WHEW, THAT’S A LOTTA INFO!
     
    Still with us? We know there’s a lot of information to process, but we felt it was worthwhile to share the details with our voxelating community members that would appreciate seeing how the sausage is made (so to speak).
     
    We can’t wait to see the cool new stuff Noveans build with the Vertex Precision Tool. As always, we encourage everyone to join the conversation on the forum in this thread. If you have questions about the VPT or want to share your thoughts and tips about voxelmancy in general, that’s the place to go.
     
     
  21. Like
    NQ-Wanderer got a reaction from Namcigam in DEVBLOG: PRECISION IN BUILDING   
    In the upcoming 0.28 Panacea update, we will introduce the Vertex Precision Tool (VPT), which adds a whole new way of bringing detail to your creative designs.
     
    This all may sound quite complex initially, but once you get used to the tool it’s quite intuitive. If you’ve been holding back because voxelmancy seemed too complicated, now’s the time to give it a try. By allowing you to simply equip the VPT and move the vertex around on a changeable grid, the process of designing with voxels is greatly simplified and far more user-friendly.
     
    Here’s a brief demonstration of what the VPT looks like and how it’s used:
     
     
    Heads up! The information in this blog leans heavily into the extremely technical side of things. Those who are into voxelmancy will probably dive in with unfettered joy. If building isn’t your jam, you may wish to stop here and get the TL;DR from one of your builder buddies later.
     
    VOXELS DEFINED
     
    Much of what you see in Dual Universe was built by players using voxels. The term “voxel” is very generic, a shortened form of “volume element”. Voxelmancy is an advanced form of building that can be quite complex, and there has always been a gap between building with standard geometric shapes and fine-tuned designs. The VPT aims to bring a game-changing  bridge for the gap between these building styles.
     
    How exactly the voxels are implemented depends a lot on the software that’s being used. In DU, a voxel contains two things: material information and a vertex position information.
     
    The material information is pretty straightforward; it is exactly the same as in a pixelated image where there is a material (think of it as a synonym of “color“) for each little square. We use what we call a uniform grid, meaning that voxels are put next to each other in a 3D grid and all have the same size. For example, on a planet voxels are 1 meter long (1m x 1m x 1m) whereas they can be 25 centimeters long (0.25m x 0.25m x 0.25m) on a user construct. It’s exactly how pixels work in 2D images, and you may already be familiar with these kinds of voxels because they are present in games like Minecraft.
     
    VERTICES POSITIONS
     
    Let’s drill down even deeper into the well of technical stuff.
     
    As stated above, voxels contain material information and a vertex position information. The Vertex Precision Tool doesn’t touch materials, so let’s talk about vertices.
     
    3D geometry is composed of vertices, and those vertices are linked together to form faces that will be rendered on your screen. For instance, take a simple single voxel cube. It is composed of one material, but has eight vertices on the eight corners. Since our voxels in DU store both a material and a vertex position, our “single voxel” here is composed of eight voxels because it takes eight vertices to form a cube!
     
    This is where it starts getting complicated. We can consider that there are two voxel grids, one is the material grid and the other is the vertex position grid, and the two grids are shifted, dual to each other. There are eight vertices around a material, and there are eight materials (we can consider the void as a special kind of material) around a vertex.
     
    So what are we talking about when we talk about a voxel? A little bit of both, depending on the context. Confusing right? We’ll try to be specific and talk about vertices, but remember there is only one vertex per voxel, although one voxel cube is composed of eight vertices (and thus is in reality eight voxels: one with matter and seven without matter.)
     
    Take a look at this picture. It is in 2D because it’s easier to understand (and to draw), but this is the same thing in 3D. This image represents a voxel sphere (more like a circle since we are in 2D).
     

      The dotted lines are the uniform grid that represent the voxels. At the intersection of those dotted lines, you can have a blue dot, representing a material. So, we have our material grid: either emptiness or a blue material. Inside of all of those cells, there may be a vertex. There is a vertex if and only if all four corners are not the same. If one of the corners is blue and another one empty, it means we have some material change here and thus something to see. So we need a vertex to know where we see the surface. On each of those cells, we have a vertex represented. The vertices are then linked together to form the surface.
     
    POSITIONS VALUES
     
    Before the Panacea update, you could only get such a sphere with the sphere tool, but with the VTP you’ll now have the opportunity to change the vertex position manually. This raises the question: what coordinate system do we use?
     
    In theory, we could use an infinite range of values. For example, we could say that the vertex should be at one third (on a given axis) in between the two materials as shown in the grid, so its value (on this axis) could be 0.333333333. It could also be 0.1415926535, or whatever we want.
     
    However, we need to store those vertex positions, and we want to be efficient so that we don’t take too much disk usage so we encode the vertex position (on a given axis) on a single byte. This means we only have 256 different possibilities for a vertex position, but we don’t really need more. A vertex position is a coordinate with three numbers (for the three axes) where all of these numbers are integers (with a maximum 256 different possible integers).
     
    So what are those possible values? Before answering that, we need to consider where a vertex can lie. On the sphere representation drawing, you can see that vertices are inside the zone defined by the four surrounding material points. This is indeed where a vertex should be most of the time, although we may sometimes want to overflow a bit, reach a little further than the vertex is supposed to. This will encroach on the zone of the neighbor voxel, but it does not have to be a problem. We decided that a vertex could lie on its one zone, but also the zone of its direct neighbors. On the 2D schematics above, it means that a vertex can be placed anywhere on the nine squares around it.
     
    A vertex encoding actually encodes three vertice’s positions. We want to have an encoding for all the important positions, the middle of each of the three voxels and their borders. This means that we need a multiple of six. We’ll use 252 as it is very close to 256. Now let’s see this coordinate system in a picture. The picture below represents four simple cubes in voxels (yellow, red, blue and cyan).
     
    We will be talking about the vertex shared by the red and blue cubes. There are actually two of those vertices in 2D, one top and one bottom; let’s talk about the top one. We state that the position it is in in the picture will be 0 (it’s a convention, the one chosen in the Vertex Precision Tool), and above the cubes we showed all the position values this vertex could have
     
     
    So 0 is the position of a vertex in a simple voxel cube. If we move the vertex into position 42 (both the top and bottom vertex of this red-blue junction), then the red rectangle will now be 1.5 times bigger, and the blue rectangle will be half its current size. If we move the vertices to -42, it would be the other way around. Note that all the values between -42 and 42 are the values where the vertex is supposed to be without overflow. This is the zone we described earlier.
     
    If we were to move the vertices to value 84, then we would enter the territory of the vertex shared by the blue and cyan cubes. This becomes a little dangerous and could result in strange results. In this example, it would lead to the blue surface to completely disappear and be replaced by the red one. The blue voxel would still exist, it would just have a null volume.
     
    And, in the example of these four cubes, if we were to go to a value above 84, it would result in an ill-formed shape because the blue shape would have a negative volume. This would probably create visual artifacts, and we may prevent this situation in the future.
     
    ENCODING CHANGE
     
    One last note for those who are familiar with voxelmancy. In Panacea, we use an encoding of 253 positions (from -126 to 126), which is different than it has been. We used an encoding of 255 positions (it was from -128 to 128 but previous -128 = actual -126). Since there is no exact mapping between the old encoding to the new one, this means that vertices in your constructs may be shifted up to 1mm (vertices at position 0 will not move, but those at extreme values will move the most). This will probably be unnoticeable, but we wanted to err on the side of caution and share this information.
     
    You may wonder, why 253? It is for the reasons explained before, to have those nice -126, -84, -42, 0, 42, 84 and 126 values. The 255 system did not allow for that. We could have chosen 193, so that you could split a voxel in 2, 4, 8, 16, 32, and 64, but that would have meant a huge loss in precision and significantly deformed most constructs. So 253 it is, and you can now split a voxel in 42!
     
    USING THE VPT
     
    There are exactly 253 positions on a single axis including zero that a vertex can be in due to it being divisible over three voxels. Negative 126, 0, and positive 126. As such, the width of one voxel is exactly 84 positions. And each vertex can be moved exactly 1.5 voxel away from the center position.
     
    Thus, the grid on which a vertex is moved is adjustable to a size that covers 1, 2, 4, 7, 14, 21 or 42 positions, 42 being the size of half a voxel. This allows the accurate placement to the finest detail or to quickly scale up and move a vertex by a half, a quarter, a sixth, or a twelfth of a voxel.
     
    See the image below to get an idea of the different size grids available to the VPT.
     
     
    Once selected, the vertex cursor can then be moved with:
    The up, down, left arrow and right Arrow keys for the x- and y-axis.
    The Page Up and Page Down for the z-axis.
    The Home key to send the cursor to the current position of the vertex.
    The End key to send your cursor to the last confirmed coordinates.
    (This also happens by default when you change vertices.)
    The Alt+Home key combination to send the cursor to the centered 0,0,0 coordinates.
    Holding Control+Scroll will adjust the grid size between the available sizes.
    Left-click confirms the placement and moves the selected vertex to the cursor.
     
    The VPT will give you the finest precision possible, no more complex voxelmancy of copy-pasting things around to get a specific shape. You may not use this tool all the time, but when you do you’ll find it exceptionally helpful for fine-tuning.
     
    WHEW, THAT’S A LOTTA INFO!
     
    Still with us? We know there’s a lot of information to process, but we felt it was worthwhile to share the details with our voxelating community members that would appreciate seeing how the sausage is made (so to speak).
     
    We can’t wait to see the cool new stuff Noveans build with the Vertex Precision Tool. As always, we encourage everyone to join the conversation on the forum in this thread. If you have questions about the VPT or want to share your thoughts and tips about voxelmancy in general, that’s the place to go.
     
     
  22. Like
    NQ-Wanderer got a reaction from Kael in DEVBLOG: PRECISION IN BUILDING   
    In the upcoming 0.28 Panacea update, we will introduce the Vertex Precision Tool (VPT), which adds a whole new way of bringing detail to your creative designs.
     
    This all may sound quite complex initially, but once you get used to the tool it’s quite intuitive. If you’ve been holding back because voxelmancy seemed too complicated, now’s the time to give it a try. By allowing you to simply equip the VPT and move the vertex around on a changeable grid, the process of designing with voxels is greatly simplified and far more user-friendly.
     
    Here’s a brief demonstration of what the VPT looks like and how it’s used:
     
     
    Heads up! The information in this blog leans heavily into the extremely technical side of things. Those who are into voxelmancy will probably dive in with unfettered joy. If building isn’t your jam, you may wish to stop here and get the TL;DR from one of your builder buddies later.
     
    VOXELS DEFINED
     
    Much of what you see in Dual Universe was built by players using voxels. The term “voxel” is very generic, a shortened form of “volume element”. Voxelmancy is an advanced form of building that can be quite complex, and there has always been a gap between building with standard geometric shapes and fine-tuned designs. The VPT aims to bring a game-changing  bridge for the gap between these building styles.
     
    How exactly the voxels are implemented depends a lot on the software that’s being used. In DU, a voxel contains two things: material information and a vertex position information.
     
    The material information is pretty straightforward; it is exactly the same as in a pixelated image where there is a material (think of it as a synonym of “color“) for each little square. We use what we call a uniform grid, meaning that voxels are put next to each other in a 3D grid and all have the same size. For example, on a planet voxels are 1 meter long (1m x 1m x 1m) whereas they can be 25 centimeters long (0.25m x 0.25m x 0.25m) on a user construct. It’s exactly how pixels work in 2D images, and you may already be familiar with these kinds of voxels because they are present in games like Minecraft.
     
    VERTICES POSITIONS
     
    Let’s drill down even deeper into the well of technical stuff.
     
    As stated above, voxels contain material information and a vertex position information. The Vertex Precision Tool doesn’t touch materials, so let’s talk about vertices.
     
    3D geometry is composed of vertices, and those vertices are linked together to form faces that will be rendered on your screen. For instance, take a simple single voxel cube. It is composed of one material, but has eight vertices on the eight corners. Since our voxels in DU store both a material and a vertex position, our “single voxel” here is composed of eight voxels because it takes eight vertices to form a cube!
     
    This is where it starts getting complicated. We can consider that there are two voxel grids, one is the material grid and the other is the vertex position grid, and the two grids are shifted, dual to each other. There are eight vertices around a material, and there are eight materials (we can consider the void as a special kind of material) around a vertex.
     
    So what are we talking about when we talk about a voxel? A little bit of both, depending on the context. Confusing right? We’ll try to be specific and talk about vertices, but remember there is only one vertex per voxel, although one voxel cube is composed of eight vertices (and thus is in reality eight voxels: one with matter and seven without matter.)
     
    Take a look at this picture. It is in 2D because it’s easier to understand (and to draw), but this is the same thing in 3D. This image represents a voxel sphere (more like a circle since we are in 2D).
     

      The dotted lines are the uniform grid that represent the voxels. At the intersection of those dotted lines, you can have a blue dot, representing a material. So, we have our material grid: either emptiness or a blue material. Inside of all of those cells, there may be a vertex. There is a vertex if and only if all four corners are not the same. If one of the corners is blue and another one empty, it means we have some material change here and thus something to see. So we need a vertex to know where we see the surface. On each of those cells, we have a vertex represented. The vertices are then linked together to form the surface.
     
    POSITIONS VALUES
     
    Before the Panacea update, you could only get such a sphere with the sphere tool, but with the VTP you’ll now have the opportunity to change the vertex position manually. This raises the question: what coordinate system do we use?
     
    In theory, we could use an infinite range of values. For example, we could say that the vertex should be at one third (on a given axis) in between the two materials as shown in the grid, so its value (on this axis) could be 0.333333333. It could also be 0.1415926535, or whatever we want.
     
    However, we need to store those vertex positions, and we want to be efficient so that we don’t take too much disk usage so we encode the vertex position (on a given axis) on a single byte. This means we only have 256 different possibilities for a vertex position, but we don’t really need more. A vertex position is a coordinate with three numbers (for the three axes) where all of these numbers are integers (with a maximum 256 different possible integers).
     
    So what are those possible values? Before answering that, we need to consider where a vertex can lie. On the sphere representation drawing, you can see that vertices are inside the zone defined by the four surrounding material points. This is indeed where a vertex should be most of the time, although we may sometimes want to overflow a bit, reach a little further than the vertex is supposed to. This will encroach on the zone of the neighbor voxel, but it does not have to be a problem. We decided that a vertex could lie on its one zone, but also the zone of its direct neighbors. On the 2D schematics above, it means that a vertex can be placed anywhere on the nine squares around it.
     
    A vertex encoding actually encodes three vertice’s positions. We want to have an encoding for all the important positions, the middle of each of the three voxels and their borders. This means that we need a multiple of six. We’ll use 252 as it is very close to 256. Now let’s see this coordinate system in a picture. The picture below represents four simple cubes in voxels (yellow, red, blue and cyan).
     
    We will be talking about the vertex shared by the red and blue cubes. There are actually two of those vertices in 2D, one top and one bottom; let’s talk about the top one. We state that the position it is in in the picture will be 0 (it’s a convention, the one chosen in the Vertex Precision Tool), and above the cubes we showed all the position values this vertex could have
     
     
    So 0 is the position of a vertex in a simple voxel cube. If we move the vertex into position 42 (both the top and bottom vertex of this red-blue junction), then the red rectangle will now be 1.5 times bigger, and the blue rectangle will be half its current size. If we move the vertices to -42, it would be the other way around. Note that all the values between -42 and 42 are the values where the vertex is supposed to be without overflow. This is the zone we described earlier.
     
    If we were to move the vertices to value 84, then we would enter the territory of the vertex shared by the blue and cyan cubes. This becomes a little dangerous and could result in strange results. In this example, it would lead to the blue surface to completely disappear and be replaced by the red one. The blue voxel would still exist, it would just have a null volume.
     
    And, in the example of these four cubes, if we were to go to a value above 84, it would result in an ill-formed shape because the blue shape would have a negative volume. This would probably create visual artifacts, and we may prevent this situation in the future.
     
    ENCODING CHANGE
     
    One last note for those who are familiar with voxelmancy. In Panacea, we use an encoding of 253 positions (from -126 to 126), which is different than it has been. We used an encoding of 255 positions (it was from -128 to 128 but previous -128 = actual -126). Since there is no exact mapping between the old encoding to the new one, this means that vertices in your constructs may be shifted up to 1mm (vertices at position 0 will not move, but those at extreme values will move the most). This will probably be unnoticeable, but we wanted to err on the side of caution and share this information.
     
    You may wonder, why 253? It is for the reasons explained before, to have those nice -126, -84, -42, 0, 42, 84 and 126 values. The 255 system did not allow for that. We could have chosen 193, so that you could split a voxel in 2, 4, 8, 16, 32, and 64, but that would have meant a huge loss in precision and significantly deformed most constructs. So 253 it is, and you can now split a voxel in 42!
     
    USING THE VPT
     
    There are exactly 253 positions on a single axis including zero that a vertex can be in due to it being divisible over three voxels. Negative 126, 0, and positive 126. As such, the width of one voxel is exactly 84 positions. And each vertex can be moved exactly 1.5 voxel away from the center position.
     
    Thus, the grid on which a vertex is moved is adjustable to a size that covers 1, 2, 4, 7, 14, 21 or 42 positions, 42 being the size of half a voxel. This allows the accurate placement to the finest detail or to quickly scale up and move a vertex by a half, a quarter, a sixth, or a twelfth of a voxel.
     
    See the image below to get an idea of the different size grids available to the VPT.
     
     
    Once selected, the vertex cursor can then be moved with:
    The up, down, left arrow and right Arrow keys for the x- and y-axis.
    The Page Up and Page Down for the z-axis.
    The Home key to send the cursor to the current position of the vertex.
    The End key to send your cursor to the last confirmed coordinates.
    (This also happens by default when you change vertices.)
    The Alt+Home key combination to send the cursor to the centered 0,0,0 coordinates.
    Holding Control+Scroll will adjust the grid size between the available sizes.
    Left-click confirms the placement and moves the selected vertex to the cursor.
     
    The VPT will give you the finest precision possible, no more complex voxelmancy of copy-pasting things around to get a specific shape. You may not use this tool all the time, but when you do you’ll find it exceptionally helpful for fine-tuning.
     
    WHEW, THAT’S A LOTTA INFO!
     
    Still with us? We know there’s a lot of information to process, but we felt it was worthwhile to share the details with our voxelating community members that would appreciate seeing how the sausage is made (so to speak).
     
    We can’t wait to see the cool new stuff Noveans build with the Vertex Precision Tool. As always, we encourage everyone to join the conversation on the forum in this thread. If you have questions about the VPT or want to share your thoughts and tips about voxelmancy in general, that’s the place to go.
     
     
  23. Like
    NQ-Wanderer got a reaction from Zripss in DEVBLOG: PRECISION IN BUILDING   
    In the upcoming 0.28 Panacea update, we will introduce the Vertex Precision Tool (VPT), which adds a whole new way of bringing detail to your creative designs.
     
    This all may sound quite complex initially, but once you get used to the tool it’s quite intuitive. If you’ve been holding back because voxelmancy seemed too complicated, now’s the time to give it a try. By allowing you to simply equip the VPT and move the vertex around on a changeable grid, the process of designing with voxels is greatly simplified and far more user-friendly.
     
    Here’s a brief demonstration of what the VPT looks like and how it’s used:
     
     
    Heads up! The information in this blog leans heavily into the extremely technical side of things. Those who are into voxelmancy will probably dive in with unfettered joy. If building isn’t your jam, you may wish to stop here and get the TL;DR from one of your builder buddies later.
     
    VOXELS DEFINED
     
    Much of what you see in Dual Universe was built by players using voxels. The term “voxel” is very generic, a shortened form of “volume element”. Voxelmancy is an advanced form of building that can be quite complex, and there has always been a gap between building with standard geometric shapes and fine-tuned designs. The VPT aims to bring a game-changing  bridge for the gap between these building styles.
     
    How exactly the voxels are implemented depends a lot on the software that’s being used. In DU, a voxel contains two things: material information and a vertex position information.
     
    The material information is pretty straightforward; it is exactly the same as in a pixelated image where there is a material (think of it as a synonym of “color“) for each little square. We use what we call a uniform grid, meaning that voxels are put next to each other in a 3D grid and all have the same size. For example, on a planet voxels are 1 meter long (1m x 1m x 1m) whereas they can be 25 centimeters long (0.25m x 0.25m x 0.25m) on a user construct. It’s exactly how pixels work in 2D images, and you may already be familiar with these kinds of voxels because they are present in games like Minecraft.
     
    VERTICES POSITIONS
     
    Let’s drill down even deeper into the well of technical stuff.
     
    As stated above, voxels contain material information and a vertex position information. The Vertex Precision Tool doesn’t touch materials, so let’s talk about vertices.
     
    3D geometry is composed of vertices, and those vertices are linked together to form faces that will be rendered on your screen. For instance, take a simple single voxel cube. It is composed of one material, but has eight vertices on the eight corners. Since our voxels in DU store both a material and a vertex position, our “single voxel” here is composed of eight voxels because it takes eight vertices to form a cube!
     
    This is where it starts getting complicated. We can consider that there are two voxel grids, one is the material grid and the other is the vertex position grid, and the two grids are shifted, dual to each other. There are eight vertices around a material, and there are eight materials (we can consider the void as a special kind of material) around a vertex.
     
    So what are we talking about when we talk about a voxel? A little bit of both, depending on the context. Confusing right? We’ll try to be specific and talk about vertices, but remember there is only one vertex per voxel, although one voxel cube is composed of eight vertices (and thus is in reality eight voxels: one with matter and seven without matter.)
     
    Take a look at this picture. It is in 2D because it’s easier to understand (and to draw), but this is the same thing in 3D. This image represents a voxel sphere (more like a circle since we are in 2D).
     

      The dotted lines are the uniform grid that represent the voxels. At the intersection of those dotted lines, you can have a blue dot, representing a material. So, we have our material grid: either emptiness or a blue material. Inside of all of those cells, there may be a vertex. There is a vertex if and only if all four corners are not the same. If one of the corners is blue and another one empty, it means we have some material change here and thus something to see. So we need a vertex to know where we see the surface. On each of those cells, we have a vertex represented. The vertices are then linked together to form the surface.
     
    POSITIONS VALUES
     
    Before the Panacea update, you could only get such a sphere with the sphere tool, but with the VTP you’ll now have the opportunity to change the vertex position manually. This raises the question: what coordinate system do we use?
     
    In theory, we could use an infinite range of values. For example, we could say that the vertex should be at one third (on a given axis) in between the two materials as shown in the grid, so its value (on this axis) could be 0.333333333. It could also be 0.1415926535, or whatever we want.
     
    However, we need to store those vertex positions, and we want to be efficient so that we don’t take too much disk usage so we encode the vertex position (on a given axis) on a single byte. This means we only have 256 different possibilities for a vertex position, but we don’t really need more. A vertex position is a coordinate with three numbers (for the three axes) where all of these numbers are integers (with a maximum 256 different possible integers).
     
    So what are those possible values? Before answering that, we need to consider where a vertex can lie. On the sphere representation drawing, you can see that vertices are inside the zone defined by the four surrounding material points. This is indeed where a vertex should be most of the time, although we may sometimes want to overflow a bit, reach a little further than the vertex is supposed to. This will encroach on the zone of the neighbor voxel, but it does not have to be a problem. We decided that a vertex could lie on its one zone, but also the zone of its direct neighbors. On the 2D schematics above, it means that a vertex can be placed anywhere on the nine squares around it.
     
    A vertex encoding actually encodes three vertice’s positions. We want to have an encoding for all the important positions, the middle of each of the three voxels and their borders. This means that we need a multiple of six. We’ll use 252 as it is very close to 256. Now let’s see this coordinate system in a picture. The picture below represents four simple cubes in voxels (yellow, red, blue and cyan).
     
    We will be talking about the vertex shared by the red and blue cubes. There are actually two of those vertices in 2D, one top and one bottom; let’s talk about the top one. We state that the position it is in in the picture will be 0 (it’s a convention, the one chosen in the Vertex Precision Tool), and above the cubes we showed all the position values this vertex could have
     
     
    So 0 is the position of a vertex in a simple voxel cube. If we move the vertex into position 42 (both the top and bottom vertex of this red-blue junction), then the red rectangle will now be 1.5 times bigger, and the blue rectangle will be half its current size. If we move the vertices to -42, it would be the other way around. Note that all the values between -42 and 42 are the values where the vertex is supposed to be without overflow. This is the zone we described earlier.
     
    If we were to move the vertices to value 84, then we would enter the territory of the vertex shared by the blue and cyan cubes. This becomes a little dangerous and could result in strange results. In this example, it would lead to the blue surface to completely disappear and be replaced by the red one. The blue voxel would still exist, it would just have a null volume.
     
    And, in the example of these four cubes, if we were to go to a value above 84, it would result in an ill-formed shape because the blue shape would have a negative volume. This would probably create visual artifacts, and we may prevent this situation in the future.
     
    ENCODING CHANGE
     
    One last note for those who are familiar with voxelmancy. In Panacea, we use an encoding of 253 positions (from -126 to 126), which is different than it has been. We used an encoding of 255 positions (it was from -128 to 128 but previous -128 = actual -126). Since there is no exact mapping between the old encoding to the new one, this means that vertices in your constructs may be shifted up to 1mm (vertices at position 0 will not move, but those at extreme values will move the most). This will probably be unnoticeable, but we wanted to err on the side of caution and share this information.
     
    You may wonder, why 253? It is for the reasons explained before, to have those nice -126, -84, -42, 0, 42, 84 and 126 values. The 255 system did not allow for that. We could have chosen 193, so that you could split a voxel in 2, 4, 8, 16, 32, and 64, but that would have meant a huge loss in precision and significantly deformed most constructs. So 253 it is, and you can now split a voxel in 42!
     
    USING THE VPT
     
    There are exactly 253 positions on a single axis including zero that a vertex can be in due to it being divisible over three voxels. Negative 126, 0, and positive 126. As such, the width of one voxel is exactly 84 positions. And each vertex can be moved exactly 1.5 voxel away from the center position.
     
    Thus, the grid on which a vertex is moved is adjustable to a size that covers 1, 2, 4, 7, 14, 21 or 42 positions, 42 being the size of half a voxel. This allows the accurate placement to the finest detail or to quickly scale up and move a vertex by a half, a quarter, a sixth, or a twelfth of a voxel.
     
    See the image below to get an idea of the different size grids available to the VPT.
     
     
    Once selected, the vertex cursor can then be moved with:
    The up, down, left arrow and right Arrow keys for the x- and y-axis.
    The Page Up and Page Down for the z-axis.
    The Home key to send the cursor to the current position of the vertex.
    The End key to send your cursor to the last confirmed coordinates.
    (This also happens by default when you change vertices.)
    The Alt+Home key combination to send the cursor to the centered 0,0,0 coordinates.
    Holding Control+Scroll will adjust the grid size between the available sizes.
    Left-click confirms the placement and moves the selected vertex to the cursor.
     
    The VPT will give you the finest precision possible, no more complex voxelmancy of copy-pasting things around to get a specific shape. You may not use this tool all the time, but when you do you’ll find it exceptionally helpful for fine-tuning.
     
    WHEW, THAT’S A LOTTA INFO!
     
    Still with us? We know there’s a lot of information to process, but we felt it was worthwhile to share the details with our voxelating community members that would appreciate seeing how the sausage is made (so to speak).
     
    We can’t wait to see the cool new stuff Noveans build with the Vertex Precision Tool. As always, we encourage everyone to join the conversation on the forum in this thread. If you have questions about the VPT or want to share your thoughts and tips about voxelmancy in general, that’s the place to go.
     
     
  24. Like
    NQ-Wanderer got a reaction from Deadrank in DEVBLOG: PRECISION IN BUILDING   
    In the upcoming 0.28 Panacea update, we will introduce the Vertex Precision Tool (VPT), which adds a whole new way of bringing detail to your creative designs.
     
    This all may sound quite complex initially, but once you get used to the tool it’s quite intuitive. If you’ve been holding back because voxelmancy seemed too complicated, now’s the time to give it a try. By allowing you to simply equip the VPT and move the vertex around on a changeable grid, the process of designing with voxels is greatly simplified and far more user-friendly.
     
    Here’s a brief demonstration of what the VPT looks like and how it’s used:
     
     
    Heads up! The information in this blog leans heavily into the extremely technical side of things. Those who are into voxelmancy will probably dive in with unfettered joy. If building isn’t your jam, you may wish to stop here and get the TL;DR from one of your builder buddies later.
     
    VOXELS DEFINED
     
    Much of what you see in Dual Universe was built by players using voxels. The term “voxel” is very generic, a shortened form of “volume element”. Voxelmancy is an advanced form of building that can be quite complex, and there has always been a gap between building with standard geometric shapes and fine-tuned designs. The VPT aims to bring a game-changing  bridge for the gap between these building styles.
     
    How exactly the voxels are implemented depends a lot on the software that’s being used. In DU, a voxel contains two things: material information and a vertex position information.
     
    The material information is pretty straightforward; it is exactly the same as in a pixelated image where there is a material (think of it as a synonym of “color“) for each little square. We use what we call a uniform grid, meaning that voxels are put next to each other in a 3D grid and all have the same size. For example, on a planet voxels are 1 meter long (1m x 1m x 1m) whereas they can be 25 centimeters long (0.25m x 0.25m x 0.25m) on a user construct. It’s exactly how pixels work in 2D images, and you may already be familiar with these kinds of voxels because they are present in games like Minecraft.
     
    VERTICES POSITIONS
     
    Let’s drill down even deeper into the well of technical stuff.
     
    As stated above, voxels contain material information and a vertex position information. The Vertex Precision Tool doesn’t touch materials, so let’s talk about vertices.
     
    3D geometry is composed of vertices, and those vertices are linked together to form faces that will be rendered on your screen. For instance, take a simple single voxel cube. It is composed of one material, but has eight vertices on the eight corners. Since our voxels in DU store both a material and a vertex position, our “single voxel” here is composed of eight voxels because it takes eight vertices to form a cube!
     
    This is where it starts getting complicated. We can consider that there are two voxel grids, one is the material grid and the other is the vertex position grid, and the two grids are shifted, dual to each other. There are eight vertices around a material, and there are eight materials (we can consider the void as a special kind of material) around a vertex.
     
    So what are we talking about when we talk about a voxel? A little bit of both, depending on the context. Confusing right? We’ll try to be specific and talk about vertices, but remember there is only one vertex per voxel, although one voxel cube is composed of eight vertices (and thus is in reality eight voxels: one with matter and seven without matter.)
     
    Take a look at this picture. It is in 2D because it’s easier to understand (and to draw), but this is the same thing in 3D. This image represents a voxel sphere (more like a circle since we are in 2D).
     

      The dotted lines are the uniform grid that represent the voxels. At the intersection of those dotted lines, you can have a blue dot, representing a material. So, we have our material grid: either emptiness or a blue material. Inside of all of those cells, there may be a vertex. There is a vertex if and only if all four corners are not the same. If one of the corners is blue and another one empty, it means we have some material change here and thus something to see. So we need a vertex to know where we see the surface. On each of those cells, we have a vertex represented. The vertices are then linked together to form the surface.
     
    POSITIONS VALUES
     
    Before the Panacea update, you could only get such a sphere with the sphere tool, but with the VTP you’ll now have the opportunity to change the vertex position manually. This raises the question: what coordinate system do we use?
     
    In theory, we could use an infinite range of values. For example, we could say that the vertex should be at one third (on a given axis) in between the two materials as shown in the grid, so its value (on this axis) could be 0.333333333. It could also be 0.1415926535, or whatever we want.
     
    However, we need to store those vertex positions, and we want to be efficient so that we don’t take too much disk usage so we encode the vertex position (on a given axis) on a single byte. This means we only have 256 different possibilities for a vertex position, but we don’t really need more. A vertex position is a coordinate with three numbers (for the three axes) where all of these numbers are integers (with a maximum 256 different possible integers).
     
    So what are those possible values? Before answering that, we need to consider where a vertex can lie. On the sphere representation drawing, you can see that vertices are inside the zone defined by the four surrounding material points. This is indeed where a vertex should be most of the time, although we may sometimes want to overflow a bit, reach a little further than the vertex is supposed to. This will encroach on the zone of the neighbor voxel, but it does not have to be a problem. We decided that a vertex could lie on its one zone, but also the zone of its direct neighbors. On the 2D schematics above, it means that a vertex can be placed anywhere on the nine squares around it.
     
    A vertex encoding actually encodes three vertice’s positions. We want to have an encoding for all the important positions, the middle of each of the three voxels and their borders. This means that we need a multiple of six. We’ll use 252 as it is very close to 256. Now let’s see this coordinate system in a picture. The picture below represents four simple cubes in voxels (yellow, red, blue and cyan).
     
    We will be talking about the vertex shared by the red and blue cubes. There are actually two of those vertices in 2D, one top and one bottom; let’s talk about the top one. We state that the position it is in in the picture will be 0 (it’s a convention, the one chosen in the Vertex Precision Tool), and above the cubes we showed all the position values this vertex could have
     
     
    So 0 is the position of a vertex in a simple voxel cube. If we move the vertex into position 42 (both the top and bottom vertex of this red-blue junction), then the red rectangle will now be 1.5 times bigger, and the blue rectangle will be half its current size. If we move the vertices to -42, it would be the other way around. Note that all the values between -42 and 42 are the values where the vertex is supposed to be without overflow. This is the zone we described earlier.
     
    If we were to move the vertices to value 84, then we would enter the territory of the vertex shared by the blue and cyan cubes. This becomes a little dangerous and could result in strange results. In this example, it would lead to the blue surface to completely disappear and be replaced by the red one. The blue voxel would still exist, it would just have a null volume.
     
    And, in the example of these four cubes, if we were to go to a value above 84, it would result in an ill-formed shape because the blue shape would have a negative volume. This would probably create visual artifacts, and we may prevent this situation in the future.
     
    ENCODING CHANGE
     
    One last note for those who are familiar with voxelmancy. In Panacea, we use an encoding of 253 positions (from -126 to 126), which is different than it has been. We used an encoding of 255 positions (it was from -128 to 128 but previous -128 = actual -126). Since there is no exact mapping between the old encoding to the new one, this means that vertices in your constructs may be shifted up to 1mm (vertices at position 0 will not move, but those at extreme values will move the most). This will probably be unnoticeable, but we wanted to err on the side of caution and share this information.
     
    You may wonder, why 253? It is for the reasons explained before, to have those nice -126, -84, -42, 0, 42, 84 and 126 values. The 255 system did not allow for that. We could have chosen 193, so that you could split a voxel in 2, 4, 8, 16, 32, and 64, but that would have meant a huge loss in precision and significantly deformed most constructs. So 253 it is, and you can now split a voxel in 42!
     
    USING THE VPT
     
    There are exactly 253 positions on a single axis including zero that a vertex can be in due to it being divisible over three voxels. Negative 126, 0, and positive 126. As such, the width of one voxel is exactly 84 positions. And each vertex can be moved exactly 1.5 voxel away from the center position.
     
    Thus, the grid on which a vertex is moved is adjustable to a size that covers 1, 2, 4, 7, 14, 21 or 42 positions, 42 being the size of half a voxel. This allows the accurate placement to the finest detail or to quickly scale up and move a vertex by a half, a quarter, a sixth, or a twelfth of a voxel.
     
    See the image below to get an idea of the different size grids available to the VPT.
     
     
    Once selected, the vertex cursor can then be moved with:
    The up, down, left arrow and right Arrow keys for the x- and y-axis.
    The Page Up and Page Down for the z-axis.
    The Home key to send the cursor to the current position of the vertex.
    The End key to send your cursor to the last confirmed coordinates.
    (This also happens by default when you change vertices.)
    The Alt+Home key combination to send the cursor to the centered 0,0,0 coordinates.
    Holding Control+Scroll will adjust the grid size between the available sizes.
    Left-click confirms the placement and moves the selected vertex to the cursor.
     
    The VPT will give you the finest precision possible, no more complex voxelmancy of copy-pasting things around to get a specific shape. You may not use this tool all the time, but when you do you’ll find it exceptionally helpful for fine-tuning.
     
    WHEW, THAT’S A LOTTA INFO!
     
    Still with us? We know there’s a lot of information to process, but we felt it was worthwhile to share the details with our voxelating community members that would appreciate seeing how the sausage is made (so to speak).
     
    We can’t wait to see the cool new stuff Noveans build with the Vertex Precision Tool. As always, we encourage everyone to join the conversation on the forum in this thread. If you have questions about the VPT or want to share your thoughts and tips about voxelmancy in general, that’s the place to go.
     
     
  25. Like
    NQ-Wanderer got a reaction from Eviltek2099 in DEVBLOG: PRECISION IN BUILDING   
    In the upcoming 0.28 Panacea update, we will introduce the Vertex Precision Tool (VPT), which adds a whole new way of bringing detail to your creative designs.
     
    This all may sound quite complex initially, but once you get used to the tool it’s quite intuitive. If you’ve been holding back because voxelmancy seemed too complicated, now’s the time to give it a try. By allowing you to simply equip the VPT and move the vertex around on a changeable grid, the process of designing with voxels is greatly simplified and far more user-friendly.
     
    Here’s a brief demonstration of what the VPT looks like and how it’s used:
     
     
    Heads up! The information in this blog leans heavily into the extremely technical side of things. Those who are into voxelmancy will probably dive in with unfettered joy. If building isn’t your jam, you may wish to stop here and get the TL;DR from one of your builder buddies later.
     
    VOXELS DEFINED
     
    Much of what you see in Dual Universe was built by players using voxels. The term “voxel” is very generic, a shortened form of “volume element”. Voxelmancy is an advanced form of building that can be quite complex, and there has always been a gap between building with standard geometric shapes and fine-tuned designs. The VPT aims to bring a game-changing  bridge for the gap between these building styles.
     
    How exactly the voxels are implemented depends a lot on the software that’s being used. In DU, a voxel contains two things: material information and a vertex position information.
     
    The material information is pretty straightforward; it is exactly the same as in a pixelated image where there is a material (think of it as a synonym of “color“) for each little square. We use what we call a uniform grid, meaning that voxels are put next to each other in a 3D grid and all have the same size. For example, on a planet voxels are 1 meter long (1m x 1m x 1m) whereas they can be 25 centimeters long (0.25m x 0.25m x 0.25m) on a user construct. It’s exactly how pixels work in 2D images, and you may already be familiar with these kinds of voxels because they are present in games like Minecraft.
     
    VERTICES POSITIONS
     
    Let’s drill down even deeper into the well of technical stuff.
     
    As stated above, voxels contain material information and a vertex position information. The Vertex Precision Tool doesn’t touch materials, so let’s talk about vertices.
     
    3D geometry is composed of vertices, and those vertices are linked together to form faces that will be rendered on your screen. For instance, take a simple single voxel cube. It is composed of one material, but has eight vertices on the eight corners. Since our voxels in DU store both a material and a vertex position, our “single voxel” here is composed of eight voxels because it takes eight vertices to form a cube!
     
    This is where it starts getting complicated. We can consider that there are two voxel grids, one is the material grid and the other is the vertex position grid, and the two grids are shifted, dual to each other. There are eight vertices around a material, and there are eight materials (we can consider the void as a special kind of material) around a vertex.
     
    So what are we talking about when we talk about a voxel? A little bit of both, depending on the context. Confusing right? We’ll try to be specific and talk about vertices, but remember there is only one vertex per voxel, although one voxel cube is composed of eight vertices (and thus is in reality eight voxels: one with matter and seven without matter.)
     
    Take a look at this picture. It is in 2D because it’s easier to understand (and to draw), but this is the same thing in 3D. This image represents a voxel sphere (more like a circle since we are in 2D).
     

      The dotted lines are the uniform grid that represent the voxels. At the intersection of those dotted lines, you can have a blue dot, representing a material. So, we have our material grid: either emptiness or a blue material. Inside of all of those cells, there may be a vertex. There is a vertex if and only if all four corners are not the same. If one of the corners is blue and another one empty, it means we have some material change here and thus something to see. So we need a vertex to know where we see the surface. On each of those cells, we have a vertex represented. The vertices are then linked together to form the surface.
     
    POSITIONS VALUES
     
    Before the Panacea update, you could only get such a sphere with the sphere tool, but with the VTP you’ll now have the opportunity to change the vertex position manually. This raises the question: what coordinate system do we use?
     
    In theory, we could use an infinite range of values. For example, we could say that the vertex should be at one third (on a given axis) in between the two materials as shown in the grid, so its value (on this axis) could be 0.333333333. It could also be 0.1415926535, or whatever we want.
     
    However, we need to store those vertex positions, and we want to be efficient so that we don’t take too much disk usage so we encode the vertex position (on a given axis) on a single byte. This means we only have 256 different possibilities for a vertex position, but we don’t really need more. A vertex position is a coordinate with three numbers (for the three axes) where all of these numbers are integers (with a maximum 256 different possible integers).
     
    So what are those possible values? Before answering that, we need to consider where a vertex can lie. On the sphere representation drawing, you can see that vertices are inside the zone defined by the four surrounding material points. This is indeed where a vertex should be most of the time, although we may sometimes want to overflow a bit, reach a little further than the vertex is supposed to. This will encroach on the zone of the neighbor voxel, but it does not have to be a problem. We decided that a vertex could lie on its one zone, but also the zone of its direct neighbors. On the 2D schematics above, it means that a vertex can be placed anywhere on the nine squares around it.
     
    A vertex encoding actually encodes three vertice’s positions. We want to have an encoding for all the important positions, the middle of each of the three voxels and their borders. This means that we need a multiple of six. We’ll use 252 as it is very close to 256. Now let’s see this coordinate system in a picture. The picture below represents four simple cubes in voxels (yellow, red, blue and cyan).
     
    We will be talking about the vertex shared by the red and blue cubes. There are actually two of those vertices in 2D, one top and one bottom; let’s talk about the top one. We state that the position it is in in the picture will be 0 (it’s a convention, the one chosen in the Vertex Precision Tool), and above the cubes we showed all the position values this vertex could have
     
     
    So 0 is the position of a vertex in a simple voxel cube. If we move the vertex into position 42 (both the top and bottom vertex of this red-blue junction), then the red rectangle will now be 1.5 times bigger, and the blue rectangle will be half its current size. If we move the vertices to -42, it would be the other way around. Note that all the values between -42 and 42 are the values where the vertex is supposed to be without overflow. This is the zone we described earlier.
     
    If we were to move the vertices to value 84, then we would enter the territory of the vertex shared by the blue and cyan cubes. This becomes a little dangerous and could result in strange results. In this example, it would lead to the blue surface to completely disappear and be replaced by the red one. The blue voxel would still exist, it would just have a null volume.
     
    And, in the example of these four cubes, if we were to go to a value above 84, it would result in an ill-formed shape because the blue shape would have a negative volume. This would probably create visual artifacts, and we may prevent this situation in the future.
     
    ENCODING CHANGE
     
    One last note for those who are familiar with voxelmancy. In Panacea, we use an encoding of 253 positions (from -126 to 126), which is different than it has been. We used an encoding of 255 positions (it was from -128 to 128 but previous -128 = actual -126). Since there is no exact mapping between the old encoding to the new one, this means that vertices in your constructs may be shifted up to 1mm (vertices at position 0 will not move, but those at extreme values will move the most). This will probably be unnoticeable, but we wanted to err on the side of caution and share this information.
     
    You may wonder, why 253? It is for the reasons explained before, to have those nice -126, -84, -42, 0, 42, 84 and 126 values. The 255 system did not allow for that. We could have chosen 193, so that you could split a voxel in 2, 4, 8, 16, 32, and 64, but that would have meant a huge loss in precision and significantly deformed most constructs. So 253 it is, and you can now split a voxel in 42!
     
    USING THE VPT
     
    There are exactly 253 positions on a single axis including zero that a vertex can be in due to it being divisible over three voxels. Negative 126, 0, and positive 126. As such, the width of one voxel is exactly 84 positions. And each vertex can be moved exactly 1.5 voxel away from the center position.
     
    Thus, the grid on which a vertex is moved is adjustable to a size that covers 1, 2, 4, 7, 14, 21 or 42 positions, 42 being the size of half a voxel. This allows the accurate placement to the finest detail or to quickly scale up and move a vertex by a half, a quarter, a sixth, or a twelfth of a voxel.
     
    See the image below to get an idea of the different size grids available to the VPT.
     
     
    Once selected, the vertex cursor can then be moved with:
    The up, down, left arrow and right Arrow keys for the x- and y-axis.
    The Page Up and Page Down for the z-axis.
    The Home key to send the cursor to the current position of the vertex.
    The End key to send your cursor to the last confirmed coordinates.
    (This also happens by default when you change vertices.)
    The Alt+Home key combination to send the cursor to the centered 0,0,0 coordinates.
    Holding Control+Scroll will adjust the grid size between the available sizes.
    Left-click confirms the placement and moves the selected vertex to the cursor.
     
    The VPT will give you the finest precision possible, no more complex voxelmancy of copy-pasting things around to get a specific shape. You may not use this tool all the time, but when you do you’ll find it exceptionally helpful for fine-tuning.
     
    WHEW, THAT’S A LOTTA INFO!
     
    Still with us? We know there’s a lot of information to process, but we felt it was worthwhile to share the details with our voxelating community members that would appreciate seeing how the sausage is made (so to speak).
     
    We can’t wait to see the cool new stuff Noveans build with the Vertex Precision Tool. As always, we encourage everyone to join the conversation on the forum in this thread. If you have questions about the VPT or want to share your thoughts and tips about voxelmancy in general, that’s the place to go.
     
     
×
×
  • Create New...