3d - tutorial - scenekit download
scenekit, cómo doblar un objeto (2)
Soy nuevo en 3D.
Tengo un objeto recto que es un SCNBox, y en algún momento quiero doblarlo (con animación). ¿Hay alguna forma de lograr esto? ¿O tengo que usar múltiples objetos para simular un SCNBox en primer lugar, y luego mover y rotar esos objetos para simular la flexión?
Tienes múltiples opciones, dependiendo del efecto que buscas. SCNBox
embargo, no creo que puedas hacerlo con solo un SCNBox
.
Puede diseñar su objeto en una herramienta 3D como Blender, Maya o Cheetah3D. Cree una animación dentro de esa herramienta, exporte el modelo al formato Collada / DAE y visualícelo en SceneKit. A continuación, puede reproducir la animación por su nombre.
También es posible que puedas usar la API morphing. Esa es la diapositiva 34 del código de ejemplo WWDC 2014 SceneKit . La sesión en vivo es la sesión 610 .
La Cinemática inversa podría funcionar para ti si quieres que el extremo de tu barra toque un punto en particular. Eso implicaría construir IK en su archivo Collada, o construir el objeto mediante programación utilizando uniones de física.
Ninguno de estos enfoques son técnicas de nivel principiante.
SCNBox
tiene una propiedad heightSegmentCount
que puedes usar para producir más vértices.
Usando un modificador de sombreado podrás doblar el cubo. Así es como las hojas de pasto están animadas en Fox: Construyendo un juego SceneKit con Xcode Scene Editor . Esto se puede hacer directamente en SceneKit editor see ( Mejoras en SceneKit de WWDC 2015) o mediante programación.
editar:
Aquí está el modificador para el punto de entrada SCNShaderModifierEntryPointGeometry
:
float offset = _geometry.color.x * (sin(1.2 * u_time + (_geometry.position.x + _geometry.position.z) * 4.0) + 0.5) * 0.02;
_geometry.position.x += offset;
_geometry.color.xyz = vec3(1.0);
Los pesos de doblado se hornean en el color de vértice ( SCNGeometrySourceSemanticColor
, pero también se pueden usar coordenadas de textura) que luego se restablecen a 1.0
para que no afecten el color final de la geometría.