NVil Forum

General Category => Bug Reports => Topic started by: steve on February 07, 2014, 03:13:23 am

Title: Stepping > Move Increment
Post by: steve on February 07, 2014, 03:13:23 am
Hi IStonia,

Something that has bugged me for a while, so thought time to bring this up.

When I have "Stepping > Move Increment" enabled, I would expect that the distance(value) entered (for the stepping) is what is used for anything controlled via stepping(such as move, inset, fillet etc), but that is not always the case. It appears that stepping distance can be multiplied by such as the objects size or distance from camera. I do not see the point of having a stepping function if it is simply ignored, or its value changed.
For simple examples:-
I create a box 1x1x1, set "Stepping > Move Increment" to 0.005, Zoom to fit. With the manipulator I move the object with stepping enabled, the box will step by the value of 0.005. When I zoom out and move the object again with same stepping distance set, the step increment increases, the further I zoom out the bigger the step increment made.
I get similar problems with tools, such as (for simple example) Steamline tool > Inset Polygon(S), if I have a small value for stepping.
The same problem again if I have larger objects, small stepping values are simply ignored.

One of the main selling points put forward about Nvil, is the addition of streamline tools, which are intended to streamline the workflow. But I do not see that when most of the time I cannot control the tools to what I need(specific distance set in stepping), and have to instead bring up the visual tool popups to have to enter values needed, (because Nvil is over-riding the stepping values I want to use).

Could you please look into this?
Title: Re: Stepping > Move Increment
Post by: IStonia on February 08, 2014, 04:46:29 am
The current implementation is the cursor move distance in screen is convert to scene world distance so visually the cursor move distance will be equal or close to the extrusion distance. The advantage of this behavior is during the extrusion, you can turn stepping on/off through Shift key and the extrusion still work properly without visual disturbing. The program dose not override your stepping value. When you zoom out too much, a little cursor move is a big move in scene so the stepping will be multiplied as the result. If you zoom in tool much, cursor move is not big enough to make a scene move distance that can activate stepping.

I guess you want to use screen interval to control the stepping. I need to find the way.
Title: Re: Stepping > Move Increment
Post by: steve on February 09, 2014, 01:11:08 am
The current implementation is the cursor move distance in screen is convert to scene world distance so visually the cursor move distance will be equal or close to the extrusion distance. The advantage of this behavior is during the extrusion, you can turn stepping on/off through Shift key and the extrusion still work properly without visual disturbing.
My question to that is, what use is the cursor while stepping?
From my using Nvil, the only thing the cursor does while stepping, is limit the (move)distance the stepping can make, due to the cursor stopping at boundary of screen.

Quote
The program dose not override your stepping value. When you zoom out too much, a little cursor move is a big move in scene so the stepping will be multiplied as the result.
and can make it impossible for a small stepping size to be used.

Quote
If you zoom in tool much, cursor move is not big enough to make a scene move distance that can activate stepping.
Due to the cursor stopping at boundary of screen.

Quote
I guess you want to use screen interval to control the stepping.
I just want to be able to use the stepping value I set.

Title: Re: Stepping > Move Increment
Post by: IStonia on February 09, 2014, 04:56:31 am
I made a clip
http://youtu.be/jWv1wyh8SyA

As you can see, the cursor travel distance is about the same as extrusion distance no matter it's in stepping or non-stepping mode.

Of course, if the stepping value is too big or tool small compare to scene size, it will cause problems like you mentioned.
Do you have any suggestions for the solution, or do you know any other apps that handle this in the way you like. I saw a post in the morning about using composite tools that can fetch values from snapping input. Did you remove the post? I thought it could be a good idea, but I had to go out for work so didn't have time to reply.







Title: Re: Stepping > Move Increment
Post by: steve on February 09, 2014, 05:25:37 am
.......the cursor travel distance is about the same as extrusion distance no matter it's in stepping or non-stepping mode.
But I ask again, "What use is the cursor when stepping"?

If you are moving an object, or extruding a face (as simple examples), then there can be a need for snapping, so the cursor is used for that function. But when stepping, snaps are not functional, so there is actually no need for a cursor(any readout for stepping distance made could be placed at HUD)

Quote
Do you have any suggestions for the solution, or do you know any other apps that handle this in the way you like.
It is not a case of my wanting Nvil to be like another application, I just want to find a good workflow in Nvil. This issue with stepping is stopping me using the streamline tools how I believe I should be able to use them.

Quote
I saw a post about using composite tools that can fetch values from snapping input. Did you remove the post? I thought it could be a good idea, but I had to go out for work so didn't have time to reply.
I did post to see if it was possible(or easier) to create variables that took values from the stepping, and the variable could then be placed in/used by the "P_" functions.
I removed the post as I was not sure about that idea.
Title: Re: Stepping > Move Increment
Post by: IStonia on February 09, 2014, 07:40:29 am
I don't know how to answer your question as I think I still don't understand it correctly.

Would it be a good solution if I make it work in this way

1. Activate the extrude streamline tool.
2. Press down mouse button to activate the basic streamline tool.
3. Drag the cursor into the snapping input box. The program will make the extrusion according to snapping value and close the streamline tool.
Title: Re: Stepping > Move Increment
Post by: steve on February 09, 2014, 09:35:23 am
I don't know how to answer your question as I think I still don't understand it correctly.
OK, maybe some pics will help?

First of all, the vid you posted, it shows a polygon_normal extrusion, moving to the right with the cursor.

So that extrusion type as example:-

A simple box, (default config/settings)
I select the right hand side face of the box, and press the "A" key. The polygon_normal (NMB) extrusion is used, and the polygon extrusion and cursor move together. That is what you keep putting forward a need for.

Extrusion direction red arrow, cursor direction blue arrow.

(http://i.imgur.com/s2511h9.jpg)

This time, I select the left side polygon, press "A". I still need to move the mouse/cursor to the right(blue arrow) for correct polygon_normal direction extrude(red arrow).

(http://i.imgur.com/FzD8g31.jpg)

This time select the top polygon. Press "A" Again, I have to move the mouse to the right(blue arrow) for the polygon_normal to extrude up(red arrow).

(http://i.imgur.com/6oFSls3.jpg)

I could go on, but as you should already know, that with the polygon_normal extrusion, you always move the cursor to the right(or left for negative). You will also know that the cursor could be anywhere on screen when (with pre-selection) pressing the hotkey "A" for polygon_normal_extrude.

So, if you did not see the cursor at all, or it did not move the same distance as the extrusion, why would it make any difference for that function? (apart from the irritating possibility of the cursor stopping at the edge of the screen)


Quote
Would it be a good solution if I make it work in this way

1. Activate the extrude streamline tool.
2. Press down mouse button to activate the basic streamline tool.
3. Drag the cursor into the snapping input box. The program will make the extrusion according to snapping value and close the streamline tool.
I do not see how. When using such as the polygon_normal extrusion with stepping, I should not need to have to look for the cursor position, or have to position it to a specific place. Doing so just makes the function clunky.(having to check where the cursor is and then moving it in to a small specific window).

Please Note:
You keep putting forward "Extrude", when I am posting concerning "Stepping". Stepping is for various other tools/functions as well as extrude.





Title: Re: Stepping > Move Increment
Post by: IStonia on February 09, 2014, 10:57:09 am
No mater what, a conversion between cursor movement and the operation movement is needed. That is the key point. That may be the answer to you question.

With the conversion I am using, although extrude direction can be different from cursor move direction, the two distances are close to each other. I think that is better than using a conversion that results in the two distances are big different from each other.

Well back to the point how we can use the stepping values. The current doable way is you need to zoom out/in camera. I know that is a hassle if you don't want to change your view. Even if I solve the cursor viewport boundary problem, that still doesn't solve the problem. You still can't do small stepping and for extra big stepping value you have to keep moving your mouse for a while.


Assume that we have found a solution to use the stepping value without zoom out/in. Because of the view size, for small stepping value, you can't tell the operation is done or not. For big stepping value, the extrusion(or something similar) may shoot out some where out side of viewport, you still need to zoom out to check whether the input value is right or not. you may have input a too big value by accident that the extrusion may have gone beyond the moon.

Edit: I have another idea. Currently, once the extrude streamline tool is activated, just simple click will produce an extrusion with the amount used by last extruding operation. I can make it use the stepping value instead if Space key is pressed. Good solution? you don't have to drag the cursor at all.

Edit: No, Space key will cause the selection group split into individual polygons. But "Redirect key" CapsLock key can be used instead.
Title: Re: Stepping > Move Increment
Post by: JTenebrous on February 09, 2014, 03:36:32 pm
Edit: I have another idea. Currently, once the extrude streamline tool is activated, just simple click will produce an extrusion with the amount used by last extruding operation. I can make it use the stepping value instead if Space key is pressed. Good solution? you don't have to drag the cursor at all.

I would prefer (either as an option... or default behaviour, but that might conflict with the preferences of others?) that using the Extrude streamline tool with a single click always produces a zero-extrusion (though, I can also see the benefit of being able to toggle that setting to "extrude by last operation").  Then, I will manually move the extruded face into position using my Stepping settings.  For example, I work in millimeter units, and I generally prefer to set my stepping size to 1/10th (0.1) mm, or 1/20 (0.05) mm.  So, if I wanted an 0.2mm extrusion, I would leave my stepping increment to 0.1, perform a zero-extrude and then transform/move the extruded face a distance of 0.2mm while holding down the shift key to constrain my translation increments by 0.1mm.
Title: Re: Stepping > Move Increment
Post by: steve on February 09, 2014, 05:18:02 pm
No mater what, a conversion between cursor movement and the operation movement is needed. That is the key point. That may be the answer to you question.
No it does not. Because you are simply saying, "That is the way it is".
When moving or extruding (or whatever) with stepping, you do not even need a cursor to be shown, It is of no actual use. Showing the cursor does not add functionality, but showing the cursor and attempting (quite badly at times) to make the cursor move at some specific speed/distance is actually removing some functionality of the stepping.

Quote
With the conversion I am using, although extrude direction can be different from cursor move direction, the two distances are close to each other. I think that is better than using a conversion that results in the two distances are big different from each other.
If the cursor was not seen, or did not move, it would make absolutely no difference when using stepping.

Quote
Well back to the point how we can use the stepping values. The current doable way is you need to zoom out/in camera. I know that is a hassle if you don't want to change your view. Even if I solve the cursor viewport boundary problem, that still doesn't solve the problem. You still can't do small stepping and for extra big stepping value you have to keep moving your mouse for a while.
Only because you are locked in this need for a cursor to be seen, and your current implementation is quite bad.


Quote
Assume that we have found a solution to use the stepping value without zoom out/in. Because of the view size, for small stepping value, you can't tell the operation is done or not. For big stepping value, the extrusion(or something similar) may shoot out some where out side of viewport, you still need to zoom out to check whether the input value is right or not. you may have input a too big value by accident that the extrusion may have gone beyond the moon.
What nonsense. There is a readout for the distance made, either with or without stepping. See the pics I posted. But of course you should know that, or do you?

Quote
Edit: I have another idea. Currently, once the extrude streamline tool is activated, just simple click will produce an extrusion with the amount used by last extruding operation. I can make it use the stepping value instead if Space key is pressed. Good solution? you don't have to drag the cursor at all.

Edit: No, Space key will cause the selection group split into individual polygons. But "Redirect key" CapsLock key can be used instead.
Not helpful at all.


Title: Re: Stepping > Move Increment
Post by: steve on February 09, 2014, 05:34:30 pm
OK, another thought.

When using the visual tools, for example, such as "Inset", "Extrude" or "Chamfer" which brings up the options window. You can currently LMB in the numeric input window and WMB up/down, which changes the value, but that change in value is not currently fixed/set, it appears to be random. Could the increment in the change in value (when using WMB up/down) be a fixed increment based on stepping value?
Title: Re: Stepping > Move Increment
Post by: IStonia on February 09, 2014, 06:03:05 pm
No mater what, a conversion between cursor movement and the operation movement is needed. That is the key point. That may be the answer to you question.
No it does not. Because you are simply saying, "That is the way it is".

If there is no conversion at all, how does the program know the amount of extrusion or movement to perform. You can use the mouse move event to trigger the stepping, but when you move the mouse there will be a bunch of mouse move events generated and you will get a series of steppings.

Well, another idea. I can make the program adjust the conversion rate base on the stepping values to ensure the stepping will happen no matter how big or how small(not zero though) it is. Also I can try to solve the boundary issue.
Title: Re: Stepping > Move Increment
Post by: IStonia on February 09, 2014, 06:07:29 pm
OK, another thought.

When using the visual tools, for example, such as "Inset", "Extrude" or "Chamfer" which brings up the options window. You can currently LMB in the numeric input window and WMB up/down, which changes the value, but that change in value is not currently fixed/set, it appears to be random. Could the increment in the change in value (when using WMB up/down) be a fixed increment based on stepping value?

I need to go to work now. I will have a look at it when I get back.
Title: Re: Stepping > Move Increment
Post by: steve on February 09, 2014, 06:34:13 pm
You can use the mouse move event to trigger the stepping, but when you move the mouse there will be a bunch of mouse move events generated and you will get a series of steppings.

Yes, of course, it should work like that. It is a need to be able to control those stepping.
Although stepping is a custom set value, that does not mean it will be a maximum distance used. For example. I have a model that will have lots of support edges(insets). Those insets may be of different sizes. I set the stepping to 0.005 but can make an inset using stepping of any size I want (within reason of course) that has an increment of 0.005.


Title: Re: Stepping > Move Increment
Post by: steve on February 09, 2014, 06:37:20 pm
I need to go to work now. I will have a look at it when I get back.

No rush. Look when you have time.

Thanks.
Title: Re: Stepping > Move Increment
Post by: IStonia on February 10, 2014, 10:27:21 am
OK, another thought.

When using the visual tools, for example, such as "Inset", "Extrude" or "Chamfer" which brings up the options window. You can currently LMB in the numeric input window and WMB up/down, which changes the value, but that change in value is not currently fixed/set, it appears to be random. Could the increment in the change in value (when using WMB up/down) be a fixed increment based on stepping value?

Can do that.


You can use the mouse move event to trigger the stepping, but when you move the mouse there will be a bunch of mouse move events generated and you will get a series of steppings.

Yes, of course, it should work like that. It is a need to be able to control those stepping.
Although stepping is a custom set value, that does not mean it will be a maximum distance used. For example. I have a model that will have lots of support edges(insets). Those insets may be of different sizes. I set the stepping to 0.005 but can make an inset using stepping of any size I want (within reason of course) that has an increment of 0.005.

No, I don't think it is a reliable way. It is random and unpredictable. When you move the cursor from a point of (100, 100) horizontally to the right, you will receive mouse events from the operating system in a pattern like this along the path

(104, 100), (107, 100), (108, 100), (113, 100), (115, 100), (119, 100)...

How can you use them to decide when a stepping will happen?
Title: Re: Stepping > Move Increment
Post by: steve on February 10, 2014, 10:47:17 am
No, I don't think it is a reliable way. It is random and unpredictable.

OK.

If I understand correctly your description of the current implementation of stepping, when you zoom out there is a multiplication of the stepping, so that movement made by cursor will still equal distance of movement of stepping. Is there a way you could stop that happening, possibly with an extra command?.
For example.
I have stepping set to 0.005, and when zoomed in, the stepping is made at 0.005, When I zoom out, that stepping can(for example) become 0.035(so loss of control of stepping). If there was a way to tell Nvil to ignore the fact I have zoomed out?(to force it not to add the multiplication), I could add that command to an hotkey. So when using stepping it would act as it is now, but with that command active, all stepping would be made as if I was zoomed in.

Is that possible?
Title: Re: Stepping > Move Increment
Post by: JTenebrous on February 10, 2014, 12:00:19 pm
I set the stepping to 0.005 but can make an inset using stepping of any size I want (within reason of course) that has an increment of 0.005.

Is this not the entire point of Stepping?  Not an absolute value, but an increment?  If this isn't the case no matter the zoom level or other factor, then it's not working correctly, is it.  I wish I knew the ins and outs from the perspective of a developer, but as an end user, I find the correct functionality of Stepping to be of major importance.  To me, it's one of the primary reasons I use NVil instead of other programs... amongst other features, I use Stepping to help me approximate an almost CAD-like level of precision, but in a subD package.  Thankfully, I've not run into many cases so far where zooming levels have broken my stepping, since I mostly use NVIL for single-mesh objects to be exported to ZBrush.  However, there might be times when I may want to use NVil for larger scenes, rather than a CAD package like I currently employ, and inconsistent stepping could really make that impractical.  I hope this can be sorted out.
Title: Re: Stepping > Move Increment
Post by: IStonia on February 11, 2014, 07:39:37 am
No, I don't think it is a reliable way. It is random and unpredictable.

OK.

If I understand correctly your description of the current implementation of stepping, when you zoom out there is a multiplication of the stepping, so that movement made by cursor will still equal distance of movement of stepping. Is there a way you could stop that happening, possibly with an extra command?.
For example.
I have stepping set to 0.005, and when zoomed in, the stepping is made at 0.005, When I zoom out, that stepping can(for example) become 0.035(so loss of control of stepping). If there was a way to tell Nvil to ignore the fact I have zoomed out?(to force it not to add the multiplication), I could add that command to an hotkey. So when using stepping it would act as it is now, but with that command active, all stepping would be made as if I was zoomed in.

Is that possible?

I will add a new functionality that can ensure stepping will happen and controllable.
Title: Re: Stepping > Move Increment
Post by: IStonia on February 12, 2014, 10:21:21 am
Try this test on polygon extrude operation and see if it is the kind of behavior you are after.
http://www.digitalfossils.com/Download/NVil-Feb-06-14-Test.rar
Title: Re: Stepping > Move Increment
Post by: steve on February 12, 2014, 12:26:46 pm
For stepping that is excellent. However,....

I thought you would of been able to add a global control (or some form of over-ride) to slow down the mouse for the stepping function. If it is something you are going to have to add to every command that uses stepping, then I would prefer you not to have to spend all that time on this, certainly as there is only me that has brought this up as a problem. I could add some composite tools, and let you spend your development time on other matters.
Title: Re: Stepping > Move Increment
Post by: IStonia on February 13, 2014, 04:38:52 am
No worries, I will add an global option.
Title: Re: Stepping > Move Increment
Post by: IStonia on February 14, 2014, 08:12:23 am
Try this one
http://www.digitalfossils.com/Download/NVil-Feb-12-14.rar

Edit > Options > Fixed Pixel Stepping Control In Extrusion Operations.
Title: Re: Stepping > Move Increment
Post by: steve on February 14, 2014, 09:58:15 am
Try this one
http://www.digitalfossils.com/Download/NVil-Feb-12-14.rar

Edit > Options > Fixed Pixel Stepping Control In Extrusion Operations.
You appear to of added better stepping control for "Extrude" and "Inset", but thought you where adding control for the stepping, so that stepping was controlled globally, for all tools/functions that use it.
If stepping is only controlled for some tools/functions, then that just makes it confusing. Also, the change should only be there when stepping is enabled.

Title: Re: Stepping > Move Increment
Post by: IStonia on February 16, 2014, 11:45:18 am
Try this one
http://www.digitalfossils.com/Download/NVil-Feb-15-14.rar

Also the cursor boundary problem is solved.
Title: Re: Stepping > Move Increment
Post by: steve on February 16, 2014, 05:49:53 pm
Try this one
On first quick tests, that is looking excellent.
Quote
Also the cursor boundary problem is solved.
Much better to work with IMHO.

For the name of the command, you would need to place the word "Move", so that it is clear it controls "Move" only.

Many thanks for taking the time to implement this.