The cause of this problem is that GrabAction may reset objects’ kinematic attribute to false after releasing them. This behavior is configurable via “Interactable/InteractionLogic/Interactable.GrabLogic/Actions/PrimaryAction/Interactable.GrabAction.FollowAction”, where “Is Kinematic When Inactive” should be ticked.

Image for post
Image for post

UPDATE: The latest VRTK has an issue which causes “IsKinematicWhenInactive” reset to false when game is started. A workaround is to patch the following line at GrabInteractableFollowAction.cs:184

- IsKinematicWhenInactive = GrabSetup != null ? GrabSetup.Facade.ConsumerRigidbody.isKinematic : false;+ IsKinematicWhenInactive = GrabSetup != null ? GrabSetup.Facade.ConsumerRigidbody.isKinematic : IsKinematicWhenInactive;

Change “Grab Offset” from “None” to “Precision Point” in “Interactable/InteractionLogic/Interactable.GrabLogic/Actions/PrimaryAction/Interactable.GrabAction.FollowAction”.

Image for post
Image for post
Image for post
Image for post

To get rid of the grabbed object after the controller button is released:

Image for post
Image for post
Step 1. Find the button action
  1. Find the desired button action in “Scene/VRTK Setup/InputMappings/UnityXR.OpenVR.LeftController”
  2. Add a item for the “Deactivated” event
  3. Drag “LeftInteractor” from Hierarchy to Inspector to fill in “None (Object)”
  4. Choose “InteractorFacade/Ungrab ()” on the right
Image for post
Image for post
Step 2–4. Add an event handler

Thereafter you may repeat 1–4 for the right controller to achieve the same effect.

Install dnscrypt:

$ sudo add-apt-repository ppa:xuzhen666/dnscrypt
$ sudo apt-get update
$ sudo apt-get install dnscrypt-proxy

Start dnscrypt-proxy instances:

$ sudo /usr/sbin/dnscrypt-proxy -R cisco-ipv6 -a -d
$ sudo /usr/sbin/dnscrypt-proxy -R cloudns-syd -a -d

-R resolver specifies the resolver proxy uses. For the list of available resolvers, please refer to /usr/share/dnscrypt-proxy/dnscrypt-resolvers.csv or online at here.

Install unbound:

$ sudo apt-get install unbound

Download the listing of primary root DNS servers:

$ sudo wget -O /etc/unbound/root.hints

Edit /etc/unbound/unbound.conf:

# Unbound configuration file for Debian.
# See the unbound.conf(5) man page.
# See /usr/share/doc/unbound/examples/unbound.conf for a commented
# reference config file.
# The following line includes additional configuration files from the
# /etc/unbound/unbound.conf.d directory.
include: "/etc/unbound/unbound.conf.d/*.conf"

# interfaces for listening (both ipv4 and ipv6)
interface: ::0

# enable for both ipv4 and ipv6 (udp or tcp)
do-ip4: yes
do-ip6: yes
do-udp: yes
do-tcp: yes

# use previously downloaded root server list
root-hints: "/etc/unbound/root.hints"

# reject id.server or version.server queries
hide-identity: yes
hide-version: yes

# enhance security (DNSSEC)
harden-glue: yes
harden-dnssec-stripped: yes
use-caps-for-id: yes

# set time to live for cache entries
cache-min-ttl: 3600
cache-max-ttl: 86400

# performance optimizations
prefetch: yes
num-threads: 4
msg-cache-slabs: 8
rrset-cache-slabs: 8
infra-cache-slabs: 8
key-cache-slabs: 8
rrset-cache-size: 256m
msg-cache-size: 128m
so-rcvbuf: 1m

# allow all IPs
access-control: allow

# allow queries on
do-not-query-localhost: no

name: "."
# forward queries to dnscrypt-proxy instances
forward-addr: …

The algorithm used here is based on M. Tennekes, et al.’s work: Tree Colors: Color Schemes for Tree-Structured Data specifically designed for generating colors for tree structured data (like tree maps) in HCL color space. A HCL color is made of three components: hue, chroma and luminance. Hue defines the color we commonly refer to in degree (from 0 to 360), chroma interpolates color from gray to full saturation, and luminance decides how bright the color looks.

Generating procedure can be divided into 2 parts:

Hue. A recursive method is defined as following:

AssignHue(v, r, f, perm, rev)

where v is a node in the tree; r is the hue range that node v occupies; f is the fraction of the hue range used (separating the hue range from its siblings); perm decides whether to permutate the colors generated; rev decides whether to reverse even-numbered colors to fully obfuscate the sequence. …

A few statistical algorithms like IsolationForest, an efficient outlier detection algorithm, are implemented in R language only. R is a fantastic language for statisticians and mathematicians, but learning a totally new language would be a huge cost for just using a simple functionality in the libraries designed specifically for that language.

rpy2 is a R to python interface which allows users conveniently call R functions and methods from python, as well as exploiting existing R modules. Some transitions are required basically due to different data types used in two languages. Example given here will be demonstrated based on IsolationForest library.

Step 1. …


Di Weng

Urban Visual Analytics | PhD Candidate at State Key Lab of CAD&CG, Zhejiang University | Member of Interactive Data Group |

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store