常用变量

必要参数

和原生的 ThreeJS 结构基本一致,但通过组件化的思维,让其看起来更直观舒服。

组件结构

场景(scene)以及 渲染器(renderer)

对于组件 TresCanvas ,它将一次性创建了 ThreeJS 的渲染器 WebGLRendere 以及场景 scene ,并将他们绑定。

<template>
  <TresCanvas ref="tcRef" window-size>
    <!-- 场景里需要的内容挂这里 -->
	<MyModel /><!-- tip 说明中引用的自定义组件 -->
  </TresCanvas>
</template>
<script lang="ts" setup>
import { ref, watchEffect } from 'vue'
import { TresCanvas } from '@tresjs/core'
const tcRef = ref()
watchEffect(() => {
	if (tcRef.value) {
		let renderer = tcRef.value.context.renderer.value
		let scene = tcRef.value.context.scene.value
		let camera = tcRef.value.context.camera.value
		console.log(tcRef.value.context)
	}
})
</script>

TIP

<template>
  <TresCanvas v-bind="state">
  </TresCanvas>
</template>
<script lang="ts" setup>
import { reactive } from 'vue'
import { TresCanvas } from '@tresjs/core'
const state = reactive({
  clearColor: '#201919',
  shadows: true,
  alpha: false,
  shadowMapType
  .... //其余参数
})
</script>
  • 若需要设置更多原生 ThreeJS 对 scene 和 renderer 的相关参数,请参考实例代码中 tcRef 部分。
  • 若其组件在 TresCanvas 内部,则可以使用 Tres 的API: useTresContext 移步:tresjs-点击详情open in new window
// MyModel.vue
<script lang="ts" setup>
import { useTresContext } from '@tresjs/core'
const { camera, renderer, cameras, ... } = useTresContext()
</script>

相机(camera)

<template>
  <TresCanvas>
    <TresPerspectiveCamera ref="tpcRef"/>
  </TresCanvas>
</template>
<script lang="ts" setup>
import { ref, watchEffect } from 'vue'
import { TresCanvas } from '@tresjs/core'
const tpcRef = ref()
watchEffect(() => {
	if (tcRef.value) {
		let camera = tpcRef.value
		console.log(camera)
	}
})
</script>

INFO

// 关于实例化默认参数
new THREE.PerspectiveCamera( 45, 1024 / 768, 1, 1000 );
<!-- Tres 实例化默认参数表达 -->
<TresPerspectiveCamera :args="[45, 1024 / 768, 1, 1000]"/>

<!-- Tres 具体某个参数 far -->
<TresPerspectiveCamera :far="1000"/>
  • 同样访问和设置相机的属性可以参考实例代码中 tpcRef 部分。

灯光(Light)

<template>
  <TresCanvas>
	<TresAmbientLight ref="taRef"/>
  </TresCanvas>
</template>
<script lang="ts" setup>
import { ref, watchEffect } from 'vue'
import { TresCanvas } from '@tresjs/core'
const taRef = ref()
watchEffect(() => {
	if (tcRef.value) {
		let light = taRef.value
		console.log(light)
	}
})
</script>

INFO

// 关于实例化默认参数
new THREE.AmbientLight( '#404040' );
<!-- Tres 实例化默认参数表达 -->
<TresAmbientLight :args="['#404040']"/>

<!-- Tres 具体某个参数 far -->
<TresAmbientLight :color="#404040"/>
  • 同样访问和设置光源的属性可以参考实例代码中 taRef 部分。