Обновленный gist, который имеет меньшую задержку, поскольку он подписан на HM:
https://gist.github.com/cidicles/b4e978d3f3e2de8b359bdc51b5fb3261
Вот как я это делаю в настоящее время. Он имеет визуальную задержку и устанавливает состояние в цикле, но достигает цели.
Создайте состояние для массива VrheadModel.rotation().
constructor(props) {
super(props);
this.state = {
hmRot: VrHeadModel.rotation()
}
}
Запустить таймер
componentDidMount(){
this.timer = setInterval(()=>{this.tick()}, 50);
}
componentWillUnmount(){
clearInterval(this.timer);
}
tick(){
this.setState({
hmRot: VrHeadModel.rotation()
});
}
Создайте вид в 0/0/0 и расположите фиксированный объект на сцене, как обычно. Установите вращение на главном виде, чтобы оно соответствовало вращению камеры.
render(){
let {hmRot} = this.state;
return (
<View
style={{
position: 'absolute',
layoutOrigin: [0.5, 0.5],
transform: [
{translate: [0, 0, 0]},
{rotateX: hmRot[0]},
{rotateY: hmRot[1]},
{rotateZ: hmRot[2]}
]
}}>
<Text
style={{
position: 'absolute',
layoutOrigin: [0.5, 0.5],
backgroundColor: '#f00',
transform: [
{translate: [0, 0, -2]},
]
}}>
Fixed
</Text>
</View>
);
}
По этой проблеме есть соответствующий пост от команды React VR здесь: https://github.com/facebook/react-vr/issues/261
person
cidicles
schedule
25.08.2017