_shared
無料Shared SDD references for installed skills. Not invokable.
日本語の概要は準備中です。原文の説明を表示しています。
Web and App implementation guide for 3D UI. Trigger when user wants actual 3D objects, perspective effects, and spatial depth.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
"Breaking the plane. Interfaces that exist in a three-dimensional, rotatable space."
Use this sub-style when the user's request matches the aesthetic described above. This is a child reference of the design-it skill and is not meant to be triggered directly.
perspective, transform-style: preserve-3d, and rotateX/rotateY..perspective-container {
perspective: 1000px;
display: flex;
justify-content: center;
align-items: center;
}
.card-3d {
width: 300px;
height: 400px;
transform-style: preserve-3d;
transition: transform 0.5s ease;
/* Initial slight rotation */
transform: rotateX(15deg) rotateY(-15deg);
}
.card-3d:hover {
/* Straighten out on hover */
transform: rotateX(0) rotateY(0) translateZ(50px);
}
/* Inner elements popping out */
.card-content {
transform: translateZ(30px); /* Pushes content 30px closer to viewer */
}
struct Card3D: View {
@State private var dragOffset = CGSize.zero
var body: some View {
VStack {
Text("3D Card")
.font(.largeTitle.bold())
.foregroundColor(.white)
}
.frame(width: 300, height: 400)
.background(
LinearGradient(colors: [.blue, .purple], startPoint: .topLeading, endPoint: .bottomTrailing)
)
.cornerRadius(24)
.shadow(radius: 20)
// Magic 3D effect based on drag gesture
.rotation3DEffect(
.degrees(Double(dragOffset.width / 10)),
axis: (x: 0, y: 1, z: 0),
perspective: 0.5
)
.rotation3DEffect(
.degrees(Double(-dragOffset.height / 10)),
axis: (x: 1, y: 0, z: 0),
perspective: 0.5
)
.gesture(
DragGesture()
.onChanged { value in
withAnimation(.interactiveSpring()) {
dragOffset = value.translation
}
}
.onEnded { _ in
withAnimation(.spring()) {
dragOffset = .zero
}
}
)
}
}
.rotation3DEffect().perspective parameter (default 1/6, higher = more distorted) to control the camera distance.x, y) to drag gestures or CoreMotion (gyroscope) for interactive 3D UI.class Card3D extends StatefulWidget {
@override
State<Card3D> createState() => _Card3DState();
}
class _Card3DState extends State<Card3D> {
Offset _offset = Offset.zero;
@override
Widget build(BuildContext context) {
return GestureDetector(
onPanUpdate: (details) {
setState(() => _offset += details.delta);
},
onPanEnd: (_) {
setState(() => _offset = Offset.zero); // Snap back
},
child: TweenAnimationBuilder(
tween: Tween<Offset>(begin: Offset.zero, end: _offset),
duration: const Duration(milliseconds: 200),
curve: Curves.easeOut,
builder: (context, Offset offset, child) {
// Perspective Matrix
final transform = Matrix4.identity()
..setEntry(3, 2, 0.001) // perspective
..rotateX(-offset.dy * 0.01)
..rotateY(offset.dx * 0.01);
return Transform(
transform: transform,
alignment: FractionalOffset.center,
child: Container(
width: 300,
height: 400,
decoration: BoxDecoration(
gradient: const LinearGradient(colors: [Colors.blue, Colors.purple]),
borderRadius: BorderRadius.circular(24),
boxShadow: const [BoxShadow(color: Colors.black45, blurRadius: 20)],
),
alignment: Alignment.center,
child: const Text('3D Card',
style: TextStyle(color: Colors.white, fontSize: 32, fontWeight: FontWeight.bold)),
),
);
},
),
);
}
}
Matrix4.identity()..setEntry(3, 2, 0.001).Transform widget and apply rotations on the X and Y axes.TweenAnimationBuilder to smooth out the return-to-center physics.const Card3D = () => {
const pan = useRef(new Animated.ValueXY()).current;
const panResponder = useRef(
PanResponder.create({
onStartShouldSetPanResponder: () => true,
onPanResponderMove: Animated.event([null, { dx: pan.x, dy: pan.y }], { useNativeDriver: false }),
onPanResponderRelease: () => {
Animated.spring(pan, { toValue: { x: 0, y: 0 }, useNativeDriver: false }).start();
},
})
).current;
// Map drag distance to degrees
const rotateX = pan.y.interpolate({ inputRange: [-200, 200], outputRange: ['20deg', '-20deg'] });
const rotateY = pan.x.interpolate({ inputRange: [-200, 200], outputRange: ['-20deg', '20deg'] });
return (
<Animated.View
{...panResponder.panHandlers}
style={{
width: 300, height: 400,
backgroundColor: '#6b21a8',
borderRadius: 24,
justifyContent: 'center', alignItems: 'center',
// Pseudo-3D transforms
transform: [
{ perspective: 1000 },
{ rotateX },
{ rotateY }
]
}}
>
<Text style={{ color: '#fff', fontSize: 32, fontWeight: '700' }}>3D Card</Text>
</Animated.View>
);
};
react-three-fiber.transform array: [{ perspective: 1000 }, { rotateX: '...' }, { rotateY: '...' }].perspective MUST be the first item in the transform array for the effect to render correctly.@Composable
fun Card3D() {
var offset by remember { mutableStateOf(Offset.Zero) }
val animatedOffset by animateOffsetAsState(
targetValue = offset,
animationSpec = spring(dampingRatio = Spring.DampingRatioMediumBouncy)
)
Box(
modifier = Modifier
.size(300.dp, 400.dp)
.pointerInput(Unit) {
detectDragGestures(
onDrag = { change, dragAmount ->
change.consume()
offset += dragAmount
},
onDragEnd = { offset = Offset.Zero },
onDragCancel = { offset = Offset.Zero }
)
}
.graphicsLayer {
// Apply 3D rotation based on drag offset
rotationX = -animatedOffset.y * 0.1f
rotationY = animatedOffset.x * 0.1f
cameraDistance = 8f * density // Sets the perspective
}
.shadow(20.dp, RoundedCornerShape(24.dp))
.clip(RoundedCornerShape(24.dp))
.background(Brush.linearGradient(listOf(Color.Blue, Color.Magenta)))
) {
Text("3D Card",
color = Color.White, fontSize = 32.sp, fontWeight = FontWeight.Bold,
modifier = Modifier.align(Alignment.Center))
}
}
Modifier.graphicsLayer { }.rotationX and rotationY for the tilt.cameraDistance to establish the Z-axis perspective vanishing point. Usually 8f * density is a good starting point.まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Shared SDD references for installed skills. Not invokable.
日本語の概要は準備中です。原文の説明を表示しています。
Arquitecto de Soluciones Principal y Consultor Tecnológico de Andru.ia. Diagnostica y traza la hoja de ruta óptima para proyectos de IA en español.
日本語の概要は準備中です。原文の説明を表示しています。
Security audit, hardening, threat modeling (STRIDE/PASTA), Red/Blue Team, OWASP checks, code review, incident response, and infrastructure security for any project.
日本語の概要は準備中です。原文の説明を表示しています。
Ingeniero de Sistemas de Andru.ia. Diseña, redacta y despliega nuevas habilidades (skills) dentro del repositorio siguiendo el Estándar de Diamante.
日本語の概要は準備中です。原文の説明を表示しています。
Estratega de Inteligencia de Dominio de Andru.ia. Analiza el nicho específico de un proyecto para inyectar conocimientos, regulaciones y estándares únicos del sector. Actívalo tras definir el nicho.
日本語の概要は準備中です。原文の説明を表示しています。
2D game development principles. Sprites, tilemaps, physics, camera.
日本語の概要は準備中です。原文の説明を表示しています。