Bug in zooming effect


Author
Message
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 105K
Erik - 6/15/2021
This turns out to be another case where appending a size indicator via string manipulation running afoul of the local locale. In this particular case replace all the concat(value, "%") code with display.getpixelsx(value):

In the attached scripts case modify the relevant <expressions> to the following:
/ AATTargetStimulusXSize = if (expressions.MovementDirection == "Approaching") display.getpixelsx(values.StartingAATTargetTextHeightInPercent * (1 + values.HopCounter*(values.FinalZoomFactorText-1)/values.NumZoomSteps))
else if (expressions.MovementDirection == "Avoiding") display.getpixelsx(values.StartingAATTargetTextHeightInPercent * (1 - values.HopCounter*(1-1/values.FinalZoomFactorText)/values.NumZoomSteps))
else display.getpixelsx(values.StartingAATTargetTextHeightInPercent)
/ AATTargetStimulusXSizeForError = if (expressions.MovementDirection == "Approaching" && script.currentblock == "PracticeAAT" && !values.ErrorFeedbackInPracticePhaseInsteadOfZoom) display.getpixelsx(values.StartingAATTargetTextHeightInPercent * (1 + values.NumZoomSteps*(values.FinalZoomFactorText-1)/values.NumZoomSteps))
else if (expressions.MovementDirection == "Avoiding" && script.currentblock == "PracticeAAT" && !values.ErrorFeedbackInPracticePhaseInsteadOfZoom) display.getpixelsx(values.StartingAATTargetTextHeightInPercent * (1 - values.NumZoomSteps*(1-1/values.FinalZoomFactorText)/values.NumZoomSteps))
else if (expressions.MovementDirection == "Approaching" && script.currentblock == "AAT" && !values.ErrorFeedbackInSRBindingPhaseInsteadOfZoom) display.getpixelsx(values.StartingAATTargetTextHeightInPercent * (1 + values.NumZoomSteps*(values.FinalZoomFactorText-1)/values.NumZoomSteps))
else if (expressions.MovementDirection == "Avoiding" && script.currentblock == "AAT" && !values.ErrorFeedbackInSRBindingPhaseInsteadOfZoom) display.getpixelsx(values.StartingAATTargetTextHeightInPercent * (1 - values.NumZoomSteps*(1-1/values.FinalZoomFactorText)/values.NumZoomSteps))
else display.getpixelsx(values.StartingAATTargetTextHeightInPercent)
/ BGPicXSize = if (expressions.MovementDirection == "Approaching") display.getpixelsx(values.StartingBGPicWidth * (1 + values.HopCounter*(values.FinalZoomFactorBGPic-1)/values.NumZoomSteps))
else if (expressions.MovementDirection == "Avoiding") display.getpixelsx(values.StartingBGPicWidth * (1 - values.HopCounter*(1-1/values.FinalZoomFactorBGPic)/values.NumZoomSteps))
else display.getpixelsx(values.StartingBGPicWidth)


and things should work as expected regardless of the locale.  

The next release will at least issue a warning that the person running the experiment will see if Inquisit fails to parse a size.


Erik beat me to the punch while I was still working on this. Note that the code provided by Erik will result in slightly to noticeably larger text sizes compared to the original code. A/B testing, I am getting identical results with the below alternative, which should (and does, on my systems) work regardless of locale / regional format settings.

<expressions>
/ AATTargetStimulusXSize = if (expressions.MovementDirection == "Approaching") {
        1pct*(values.StartingAATTargetTextHeightInPercent * (1 + values.HopCounter*(values.FinalZoomFactorText-1)/values.NumZoomSteps));
    } else if (expressions.MovementDirection == "Avoiding") {
        1pct*(values.StartingAATTargetTextHeightInPercent * (1 - values.HopCounter*(1-1/values.FinalZoomFactorText)/values.NumZoomSteps));
    } else {
        1pct*(values.StartingAATTargetTextHeightInPercent);
    };
/ AATTargetStimulusXSizeForError = if (expressions.MovementDirection == "Approaching" && script.currentblock == "PracticeAAT" && !values.ErrorFeedbackInPracticePhaseInsteadOfZoom) {
        1pct*(values.StartingAATTargetTextHeightInPercent * (1 + values.NumZoomSteps*(values.FinalZoomFactorText-1)/values.NumZoomSteps))
    } else if (expressions.MovementDirection == "Avoiding" && script.currentblock == "PracticeAAT" && !values.ErrorFeedbackInPracticePhaseInsteadOfZoom) {
        1pct*(values.StartingAATTargetTextHeightInPercent * (1 - values.NumZoomSteps*(1-1/values.FinalZoomFactorText)/values.NumZoomSteps))
    } else if (expressions.MovementDirection == "Approaching" && script.currentblock == "AAT" && !values.ErrorFeedbackInSRBindingPhaseInsteadOfZoom){
        1pct*(values.StartingAATTargetTextHeightInPercent * (1 + values.NumZoomSteps*(values.FinalZoomFactorText-1)/values.NumZoomSteps))
    } else if (expressions.MovementDirection == "Avoiding" && script.currentblock == "AAT" && !values.ErrorFeedbackInSRBindingPhaseInsteadOfZoom) {
        1pct*(values.StartingAATTargetTextHeightInPercent * (1 - values.NumZoomSteps*(1-1/values.FinalZoomFactorText)/values.NumZoomSteps))
    } else {
        1pct*(values.StartingAATTargetTextHeightInPercent)
    };
/ BGPicXSize = if (expressions.MovementDirection == "Approaching") {
        1pct*(values.StartingBGPicWidth * (1 + values.HopCounter*(values.FinalZoomFactorBGPic-1)/values.NumZoomSteps))
    } else if (expressions.MovementDirection == "Avoiding") {
        1pct*(values.StartingBGPicWidth * (1 - values.HopCounter*(1-1/values.FinalZoomFactorBGPic)/values.NumZoomSteps))
    } else {
        1pct*(values.StartingBGPicWidth)
    };
</expressions>

Erik
Erik
Partner Member (885 reputation)Partner Member (885 reputation)Partner Member (885 reputation)Partner Member (885 reputation)Partner Member (885 reputation)Partner Member (885 reputation)Partner Member (885 reputation)Partner Member (885 reputation)Partner Member (885 reputation)
Group: Moderators
Posts: 13, Visits: 199
This turns out to be another case where appending a size indicator via string manipulation running afoul of the local locale. In this particular case replace all the concat(value, "%") code with display.getpixelsx(value):

In the attached scripts case modify the relevant <expressions> to the following:
/ AATTargetStimulusXSize = if (expressions.MovementDirection == "Approaching") display.getpixelsx(values.StartingAATTargetTextHeightInPercent * (1 + values.HopCounter*(values.FinalZoomFactorText-1)/values.NumZoomSteps))
else if (expressions.MovementDirection == "Avoiding") display.getpixelsx(values.StartingAATTargetTextHeightInPercent * (1 - values.HopCounter*(1-1/values.FinalZoomFactorText)/values.NumZoomSteps))
else display.getpixelsx(values.StartingAATTargetTextHeightInPercent)
/ AATTargetStimulusXSizeForError = if (expressions.MovementDirection == "Approaching" && script.currentblock == "PracticeAAT" && !values.ErrorFeedbackInPracticePhaseInsteadOfZoom) display.getpixelsx(values.StartingAATTargetTextHeightInPercent * (1 + values.NumZoomSteps*(values.FinalZoomFactorText-1)/values.NumZoomSteps))
else if (expressions.MovementDirection == "Avoiding" && script.currentblock == "PracticeAAT" && !values.ErrorFeedbackInPracticePhaseInsteadOfZoom) display.getpixelsx(values.StartingAATTargetTextHeightInPercent * (1 - values.NumZoomSteps*(1-1/values.FinalZoomFactorText)/values.NumZoomSteps))
else if (expressions.MovementDirection == "Approaching" && script.currentblock == "AAT" && !values.ErrorFeedbackInSRBindingPhaseInsteadOfZoom) display.getpixelsx(values.StartingAATTargetTextHeightInPercent * (1 + values.NumZoomSteps*(values.FinalZoomFactorText-1)/values.NumZoomSteps))
else if (expressions.MovementDirection == "Avoiding" && script.currentblock == "AAT" && !values.ErrorFeedbackInSRBindingPhaseInsteadOfZoom) display.getpixelsx(values.StartingAATTargetTextHeightInPercent * (1 - values.NumZoomSteps*(1-1/values.FinalZoomFactorText)/values.NumZoomSteps))
else display.getpixelsx(values.StartingAATTargetTextHeightInPercent)
/ BGPicXSize = if (expressions.MovementDirection == "Approaching") display.getpixelsx(values.StartingBGPicWidth * (1 + values.HopCounter*(values.FinalZoomFactorBGPic-1)/values.NumZoomSteps))
else if (expressions.MovementDirection == "Avoiding") display.getpixelsx(values.StartingBGPicWidth * (1 - values.HopCounter*(1-1/values.FinalZoomFactorBGPic)/values.NumZoomSteps))
else display.getpixelsx(values.StartingBGPicWidth)


and things should work as expected regardless of the locale.  

The next release will at least issue a warning that the person running the experiment will see if Inquisit fails to parse a size.



Developer at Millisecond Software, LLC.
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 105K
AKrishna - 6/14/2021
Dave - 6/7/2021
Dave - 6/4/2021
AKrishna - 6/4/2021
A driver update to the current Intel build changed nothing, the error persisted.

And yes - the uploaded script is the same as the one being used in the testing, as is the picture.

Alright, I've compiled all the information into a bug report. We'll have to see if we can find some system among ours on which the problem is reproducible (no luck with that yet).

If you get the specs from the other systems you've observed this on, please add them here.

We're not having any luck trying to reproduce the issue. To help us narrow down potential causes, it would be great if you could try the following on the affected Dell machine and report back the result:

Set values.TimeInMSBetweenAnimationHops to twice the nominal refresh interval reported by the system, i.e.

<values>
...
/ TimeInMSBetweenAnimationHops = 2*display.refreshinterval
...
</values>

This will obviously slow down the animation and make it choppy, but it would be very helpful to know whether the text layer is still being omitted on some trials or whether it is displayed reliably with a longer hop time.

Increasing the time between animation hops in this way did NOT solve the issue on at least one affected system (the one with the old Intel driver). The zoom effect was visibly slower as expected, but the word still flickered and there were still "jumps" in the zoom.

Thanks for taking the time to test (also regarding the other, progress bar / shape sizing issue; https://www.millisecond.com/forums/FindPost31710.aspx ). My guess is that the two are indeed related, and I suspect the ultimate cause is some misinterpretation of the calculated size values happening due to confustion about the decimal separator ("," vs ".") either at the driver-level or somewhere deep inside the engine. Your test results should give us enough to go on and either fix (if it's engine-level) or work around (if it's driver-level) that in the next update.

AKrishna
AKrishna
Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)
Group: Forum Members
Posts: 118, Visits: 396
Dave - 6/7/2021
Dave - 6/4/2021
AKrishna - 6/4/2021
A driver update to the current Intel build changed nothing, the error persisted.

And yes - the uploaded script is the same as the one being used in the testing, as is the picture.

Alright, I've compiled all the information into a bug report. We'll have to see if we can find some system among ours on which the problem is reproducible (no luck with that yet).

If you get the specs from the other systems you've observed this on, please add them here.

We're not having any luck trying to reproduce the issue. To help us narrow down potential causes, it would be great if you could try the following on the affected Dell machine and report back the result:

Set values.TimeInMSBetweenAnimationHops to twice the nominal refresh interval reported by the system, i.e.

<values>
...
/ TimeInMSBetweenAnimationHops = 2*display.refreshinterval
...
</values>

This will obviously slow down the animation and make it choppy, but it would be very helpful to know whether the text layer is still being omitted on some trials or whether it is displayed reliably with a longer hop time.

Increasing the time between animation hops in this way did NOT solve the issue on at least one affected system (the one with the old Intel driver). The zoom effect was visibly slower as expected, but the word still flickered and there were still "jumps" in the zoom.

AKrishna
AKrishna
Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)
Group: Forum Members
Posts: 118, Visits: 396
Dave - 6/7/2021
Dave - 6/4/2021
AKrishna - 6/4/2021
A driver update to the current Intel build changed nothing, the error persisted.

And yes - the uploaded script is the same as the one being used in the testing, as is the picture.

Alright, I've compiled all the information into a bug report. We'll have to see if we can find some system among ours on which the problem is reproducible (no luck with that yet).

If you get the specs from the other systems you've observed this on, please add them here.

We're not having any luck trying to reproduce the issue. To help us narrow down potential causes, it would be great if you could try the following on the affected Dell machine and report back the result:

Set values.TimeInMSBetweenAnimationHops to twice the nominal refresh interval reported by the system, i.e.

<values>
...
/ TimeInMSBetweenAnimationHops = 2*display.refreshinterval
...
</values>

This will obviously slow down the animation and make it choppy, but it would be very helpful to know whether the text layer is still being omitted on some trials or whether it is displayed reliably with a longer hop time.

Haven't been able to test this yet, but will do so hopefully later today. For now, the specs of another affected system:

Windows 10 Build 19042
Intel Core i5-10210U
16 GB RAM
Intel UHD Graphics, driver version 26.20.100.7985
Resolution: 1920 x 1080 x 60 Hz
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 105K
Dave - 6/4/2021
AKrishna - 6/4/2021
A driver update to the current Intel build changed nothing, the error persisted.

And yes - the uploaded script is the same as the one being used in the testing, as is the picture.

Alright, I've compiled all the information into a bug report. We'll have to see if we can find some system among ours on which the problem is reproducible (no luck with that yet).

If you get the specs from the other systems you've observed this on, please add them here.

We're not having any luck trying to reproduce the issue. To help us narrow down potential causes, it would be great if you could try the following on the affected Dell machine and report back the result:

Set values.TimeInMSBetweenAnimationHops to twice the nominal refresh interval reported by the system, i.e.

<values>
...
/ TimeInMSBetweenAnimationHops = 2*display.refreshinterval
...
</values>

This will obviously slow down the animation and make it choppy, but it would be very helpful to know whether the text layer is still being omitted on some trials or whether it is displayed reliably with a longer hop time.

Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 105K
AKrishna - 6/4/2021
A driver update to the current Intel build changed nothing, the error persisted.

And yes - the uploaded script is the same as the one being used in the testing, as is the picture.

Alright, I've compiled all the information into a bug report. We'll have to see if we can find some system among ours on which the problem is reproducible (no luck with that yet).

If you get the specs from the other systems you've observed this on, please add them here.

AKrishna
AKrishna
Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)Distinguished Member (3.8K reputation)
Group: Forum Members
Posts: 118, Visits: 396
A driver update to the current Intel build changed nothing, the error persisted.

And yes - the uploaded script is the same as the one being used in the testing, as is the picture.

Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 105K
Dave - 6/4/2021
AKrishna - 6/4/2021
Driver date on the PC in the footage: October 20, 2016; version 21.20.16.4541


In contrast, I DON'T have the issue on my PC:

Inquisit 6.4.2 64bit (build 6307)
Windows 10 Pro Build 19042
Intel Core i7-5960X
32GB RAM
Geforce GTX980 graphics card, driver version 27.21 14.6109 (December 31, 2020)

The driver on the affected system is fairly ancient and outdated, and a driver bug is a distinct possibility. According to Intel's website, the latest release available for the HD 520 is driver version 27.20.100.9466 (date: 05/14/2021):
https://www.intel.com/content/www/us/en/support/products/88355/graphics/graphics-for-6th-generation-intel-processors/intel-hd-graphics-520.html

Please try updating to that driver and let me know if the issue persists after doing so.

One more question for clarification: The script run on the affected system is the exact same one you provided in this thread, correct? I'd like to rule out that we're looking at slightly different bits of code, with a subtle mistake in one version, but not the other.

Adding: If you don't want to install the non-branded Intel driver, the Dell support portal for your system should also offer a more recent OEM driver version (these typically lag a little behind the Intel releases, but can contain OEM customizations integrating them with other Dell-proprietary features on the system, such as hotkey integration).
Dave
Dave
Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)Supreme Being (1M reputation)
Group: Administrators
Posts: 13K, Visits: 105K
AKrishna - 6/4/2021
Driver date on the PC in the footage: October 20, 2016; version 21.20.16.4541


In contrast, I DON'T have the issue on my PC:

Inquisit 6.4.2 64bit (build 6307)
Windows 10 Pro Build 19042
Intel Core i7-5960X
32GB RAM
Geforce GTX980 graphics card, driver version 27.21 14.6109 (December 31, 2020)

The driver on the affected system is fairly ancient and outdated, and a driver bug is a distinct possibility. According to Intel's website, the latest release available for the HD 520 is driver version 27.20.100.9466 (date: 05/14/2021):
https://www.intel.com/content/www/us/en/support/products/88355/graphics/graphics-for-6th-generation-intel-processors/intel-hd-graphics-520.html

Please try updating to that driver and let me know if the issue persists after doing so.

One more question for clarification: The script run on the affected system is the exact same one you provided in this thread, correct? I'd like to rule out that we're looking at slightly different bits of code, with a subtle mistake in one version, but not the other.

GO

Merge Selected

Merge into selected topic...



Merge into merge target...



Merge into a specific topic ID...




Reading This Topic

Explore
Messages
Mentions
Search