Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • Alexandre.Meyer/m1if37-animation
  • Alexandre.Meyer/m2-apprentissage-profond-image
  • Alexandre.Meyer/m2-animation
  • Alexandre.Meyer/hugo-web-minimal
  • Alexandre.Meyer/lifami
  • Alexandre.Meyer/lifapcd
  • Alexandre.Meyer/www
  • Alexandre.Meyer/lifstage
8 results
Show changes
Commits on Source (20)
  • Alexandre MEYER's avatar
    Update 2 files · b69ae6cf
    Alexandre MEYER authored
    - /web/content/_index.md
    - /README.md
    b69ae6cf
  • Alexandre MEYER's avatar
    Update 2 files · a97a1d00
    Alexandre MEYER authored
    - /README.md
    - /web/config.toml
    a97a1d00
  • Alexandre MEYER's avatar
    Update 9 files · ebeca48d
    Alexandre MEYER authored
    - /web/content/personnage/_index.md
    - /web/content/personnage/tp.md
    - /web/content/personnage/video.md
    - /web/content/controle/index.md
    - /web/content/am/_index.md
    - /web/content/am/video.md
    - /web/content/am/tp.md
    - /web/content/_index.md
    - /web/config.toml
    ebeca48d
  • Alexandre MEYER's avatar
    Update 411 files · ae9818c4
    Alexandre MEYER authored
    - /web/static/doc_charanim/charanim_tpose.jpg
    - /web/static/doc_controle/tp/Box2D/CB_projectFiles/Box2D_Linux.cbp
    - /web/static/doc_controle/tp/Box2D/CB_projectFiles/Box2D_Win.cbp
    - /web/static/doc_controle/tp/Box2D/CB_projectFiles/GLEW_Win.cbp
    - /web/static/doc_controle/tp/Box2D/CB_projectFiles/GLFW_Win.cbp
    - /web/static/doc_controle/tp/Box2D/CB_projectFiles/IMGUI_Linux.cbp
    - /web/static/doc_controle/tp/Box2D/CB_projectFiles/IMGUI_Win.cbp
    - /web/static/doc_controle/tp/src/Data/DroidSans.ttf
    - /web/static/doc_controle/tp/src/Framework/Application.cpp
    - /web/static/doc_controle/tp/src/Framework/Application.h
    - /web/static/doc_controle/tp/src/Framework/DebugDraw.cpp
    - /web/static/doc_controle/tp/src/Framework/DebugDraw.h
    - /web/static/doc_controle/tp/src/Framework/Main.cpp
    - /web/static/doc_controle/tp/src/Creature.cpp
    - /web/static/doc_controle/tp/src/Creature.h
    - /web/static/doc_controle/tp/src/Motion.cpp
    - /web/static/doc_controle/tp/src/Motion.h
    - /web/static/doc_controle/tp/src/PDController.cpp
    - /web/static/doc_controle/tp/src/PDController.h
    - /web/static/doc_controle/tp/Box2D/lib/linux/libBox2D.a
    - /web/static/doc_controle/tp/Box2D/lib/linux/libBox2D_d.a
    - /web/static/doc_controle/tp/Box2D/lib/linux/libIMGUI.a
    - /web/static/doc_controle/tp/Box2D/lib/linux/libIMGUI_d.a
    - /web/static/doc_controle/tp/Box2D/lib/win32/libBox2D.a
    - /web/static/doc_controle/tp/Box2D/lib/win32/libBox2D_d.a
    - /web/static/doc_controle/tp/Box2D/lib/win32/libGLEW.a
    - /web/static/doc_controle/tp/Box2D/lib/win32/libGLEW_d.a
    - /web/static/doc_controle/tp/Box2D/lib/win32/libGLFW.a
    - /web/static/doc_controle/tp/Box2D/lib/win32/libGLFW_d.a
    - /web/static/doc_controle/tp/Box2D/lib/win32/libIMGUI.a
    - /web/static/doc_controle/tp/Box2D/lib/win32/libIMGUI_d.a
    - /web/static/doc_controle/tp/Box2D/src/glew/glew.c
    - /web/static/doc_controle/tp/Box2D/src/glew/glew.h
    - /web/static/doc_controle/tp/Box2D/src/glew/glxew.h
    - /web/static/doc_controle/tp/Box2D/src/glew/wglew.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/_mingw_dxhelper.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/cocoa_init.m
    - /web/static/doc_controle/tp/Box2D/src/glfw/cocoa_joystick.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/cocoa_joystick.m
    - /web/static/doc_controle/tp/Box2D/src/glfw/cocoa_monitor.m
    - /web/static/doc_controle/tp/Box2D/src/glfw/cocoa_platform.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/cocoa_time.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/cocoa_window.m
    - /web/static/doc_controle/tp/Box2D/src/glfw/context.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/dinput.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/egl_context.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/egl_context.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/eglext.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/glext.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/glfw3.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/glfw3.pc.in
    - /web/static/doc_controle/tp/Box2D/src/glfw/glfw3Config.cmake.in
    - /web/static/doc_controle/tp/Box2D/src/glfw/glfw3native.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/glfw_config.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/glfw_config.h.in
    - /web/static/doc_controle/tp/Box2D/src/glfw/glx_context.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/glx_context.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/glxext.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/init.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/input.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/internal.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/iokit_joystick.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/iokit_joystick.m
    - /web/static/doc_controle/tp/Box2D/src/glfw/linux_joystick.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/linux_joystick.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/mach_time.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/monitor.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/nsgl_context.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/nsgl_context.m
    - /web/static/doc_controle/tp/Box2D/src/glfw/null_joystick.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/null_joystick.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/posix_time.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/posix_time.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/posix_tls.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/posix_tls.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/vulkan.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/wgl_context.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/wgl_context.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/wglext.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/win32_init.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/win32_joystick.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/win32_joystick.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/win32_monitor.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/win32_platform.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/win32_time.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/win32_tls.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/win32_tls.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/win32_window.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/window.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/x11_init.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/x11_monitor.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/x11_platform.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/x11_window.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/xinput.h
    - /web/static/doc_controle/tp/Box2D/src/glfw/xkb_unicode.c
    - /web/static/doc_controle/tp/Box2D/src/glfw/xkb_unicode.h
    - /web/static/doc_controle/tp/Box2D/src/imgui/imconfig.h
    - /web/static/doc_controle/tp/Box2D/src/imgui/imgui.cpp
    - /web/static/doc_controle/tp/Box2D/src/imgui/imgui.h
    - /web/static/doc_controle/tp/Box2D/src/imgui/imgui.ini
    - /web/static/doc_controle/tp/Box2D/src/imgui/imgui_demo.cpp
    - /web/static/doc_controle/tp/Box2D/src/imgui/imgui_draw.cpp
    - /web/static/doc_controle/tp/Box2D/src/imgui/imgui_impl_glfw_gl3.cpp
    - /web/static/doc_controle/tp/Box2D/src/imgui/imgui_impl_glfw_gl3.h
    - /web/static/doc_controle/tp/Box2D/src/imgui/imgui_internal.h
    - /web/static/doc_controle/tp/Box2D/src/imgui/stb_rect_pack.h
    - /web/static/doc_controle/tp/Box2D/src/imgui/stb_textedit.h
    - /web/static/doc_controle/tp/Box2D/src/imgui/stb_truetype.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Common/b2BlockAllocator.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Common/b2BlockAllocator.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Common/b2Draw.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Common/b2Draw.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Common/b2GrowableStack.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Common/b2Math.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Common/b2Math.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Common/b2Settings.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Common/b2Settings.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Common/b2StackAllocator.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Common/b2StackAllocator.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Common/b2Timer.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Common/b2Timer.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Rope/b2Rope.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Rope/b2Rope.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Tests/Biped.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Tests/Biped.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Tests/BipedDef.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Tests/BipedDef.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Tests/BipedTest.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Tests/BreakableBody.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Tests/Car.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Tests/ContactCallbackTest.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Tests/DynamicEdges.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Tests/ElasticBody.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Tests/PyramidStaticEdges.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Tests/StaticEdges.h
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/Chain1.png
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/Chain1.svg
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/DebugDraw.png
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/GhostCollision.png
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/GhostCollision.svg
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/GhostVertices.png
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/GhostVertices.svg
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/SelfIntersect.png
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/SelfIntersect.svg
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/SkinCollision.png
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/SkinCollision.svg
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/SkinnedPolygon.png
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/SkinnedPolygon.svg
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/Tunnel1.png
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/Tunnel1.svg
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/WheelJoint.png
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/WheelJoint.svg
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/bodyOrigin.gif
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/captured.png
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/captured.svg
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/convex_concave.gif
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/distance.png
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/distance.svg
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/distanceJoint.gif
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/gearJoint.gif
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/manifolds.png
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/manifolds.svg
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/missed.png
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/missed.svg
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/modules.png
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/modules.svg
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/prismaticJoint.gif
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/pulleyJoint.gif
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/raycast.png
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/raycast.svg
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/regionquery.png
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/regionquery.svg
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/revoluteJoint.gif
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/testbed.gif
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/tunneling.png
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/tunneling.svg
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/winding.png
    - /web/static/doc_controle/tp/Box2D/src/Documentation/images/winding.svg
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Data/DroidSans.ttf
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Framework/DebugDraw.cpp
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Framework/DebugDraw.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Framework/Main.cpp
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Framework/Test.cpp
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Framework/Test.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/AddPair.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/ApplyForce.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/BasicSliderCrank.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/BodyTypes.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/Breakable.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/Bridge.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/BulletTest.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/Cantilever.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/Car.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/Chain.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/CharacterCollision.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/CollisionFiltering.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/CollisionProcessing.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/CompoundShapes.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/Confined.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/ContinuousTest.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/ConvexHull.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/ConveyorBelt.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/DistanceTest.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/Dominos.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/DumpShell.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/DynamicTreeTest.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/EdgeShapes.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/EdgeTest.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/Gears.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/HeavyOnLight.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/HeavyOnLightTwo.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/Mobile.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/MobileBalanced.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/MotorJoint.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/OneSidedPlatform.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/Pinball.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/PolyCollision.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/PolyShapes.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/Prismatic.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/Pulleys.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/Pyramid.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/RayCast.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/Revolute.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/Rope.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/RopeJoint.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/SensorTest.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/ShapeEditing.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/Skier.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/SliderCrank.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/SphereStack.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/TestEntries.cpp
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/TheoJansen.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/Tiles.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/TimeOfImpact.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/Tumbler.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/VaryingFriction.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/VaryingRestitution.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/VerticalStack.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/Web.h
    - /web/static/doc_controle/tp/Box2D/src/Testbed/Tests/chainProblem.h
    - /web/static/doc_controle/tp/Box2D/src/Documentation/Doxyfile
    - /web/static/doc_controle/tp/Box2D/src/Documentation/manual.docx
    - /web/static/doc_controle/tp/Box2D/src/Testbed/HelloWorld.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/Shapes/b2ChainShape.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/Shapes/b2ChainShape.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/Shapes/b2CircleShape.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/Shapes/b2CircleShape.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/Shapes/b2EdgeShape.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/Shapes/b2EdgeShape.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/Shapes/b2PolygonShape.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/Shapes/b2PolygonShape.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/Shapes/b2Shape.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Contacts/b2CircleContact.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Contacts/b2CircleContact.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Contacts/b2Contact.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Contacts/b2Contact.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Contacts/b2ContactSolver.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Contacts/b2ContactSolver.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Contacts/b2PolygonContact.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Contacts/b2PolygonContact.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2DistanceJoint.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2DistanceJoint.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2FrictionJoint.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2FrictionJoint.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2GearJoint.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2GearJoint.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2Joint.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2Joint.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2MotorJoint.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2MotorJoint.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2MouseJoint.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2MouseJoint.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2PrismaticJoint.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2PrismaticJoint.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2PulleyJoint.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2PulleyJoint.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2RevoluteJoint.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2RevoluteJoint.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2RopeJoint.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2RopeJoint.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2WeldJoint.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2WeldJoint.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2WheelJoint.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/Joints/b2WheelJoint.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Enhancements/Controllers/b2BuoyancyController.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Enhancements/Controllers/b2BuoyancyController.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Enhancements/Controllers/b2ConstantAccelController.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Enhancements/Controllers/b2ConstantAccelController.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Enhancements/Controllers/b2ConstantForceController.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Enhancements/Controllers/b2ConstantForceController.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Enhancements/Controllers/b2Controller.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Enhancements/Controllers/b2Controller.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Enhancements/Controllers/b2GravityController.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Enhancements/Controllers/b2GravityController.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Enhancements/Controllers/b2TensorDampingController.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Enhancements/Controllers/b2TensorDampingController.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Enhancements/FixedPoint/Fixed.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Enhancements/FixedPoint/jtypes.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Enhancements/Shapes/capsule88.patch
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/AABB.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/AssemblyInfo.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/Body.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/BodyDef.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/Box2D.Net.vcproj
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/Contact.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/Delegates.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/Joint.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/JointDef.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/Manifold.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/ManifoldPoint.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/MassData.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/Matrix.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/RevoluteJoint.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/Shape.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/Shape.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/ShapeDef.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/ShapeType.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/Stdafx.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/VariousImplementations.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/Vector.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/World.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.Net/XForm.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Utilities/ConvexDecomposition/b2Polygon.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Utilities/ConvexDecomposition/b2Polygon.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Utilities/ConvexDecomposition/b2Triangle.cpp
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Utilities/ConvexDecomposition/b2Triangle.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/b2BroadPhase.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/b2BroadPhase.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/b2CollideCircle.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/b2CollideEdge.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/b2CollidePolygon.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/b2Collision.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/b2Collision.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/b2Distance.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/b2Distance.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/b2DynamicTree.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/b2DynamicTree.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/b2TimeOfImpact.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Collision/b2TimeOfImpact.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/b2Body.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/b2Body.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/b2ContactManager.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/b2ContactManager.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/b2Fixture.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/b2Fixture.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/b2Island.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/b2Island.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/b2TimeStep.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/b2World.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/b2World.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/b2WorldCallbacks.cpp
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Dynamics/b2WorldCallbacks.h
    - /web/static/doc_controle/tp/Box2D/src/Box2D/Box2D.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/TestBed.Net/Properties/AssemblyInfo.cs
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/TestBed.Net/Tests/Bridge.cs
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/iPhone/Classes/Box2DAppDelegate.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/iPhone/Classes/Box2DAppDelegate.mm
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/iPhone/Classes/Box2DView.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/iPhone/Classes/Box2DView.mm
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/iPhone/Classes/Delegates.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/iPhone/Classes/GLES-Render.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/iPhone/Classes/GLES-Render.mm
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/iPhone/Classes/TestEntriesViewController.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/iPhone/Classes/TestEntriesViewController.mm
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/iPhone/Classes/iPhoneTest.h
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/iPhone/Classes/iPhoneTest.mm
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/iPhone/Classes/iPhoneTestEntries.mm
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/iPhone/Resources/Icon.png
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/iPhone/CMakeLists.txt
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/iPhone/Info.plist.in
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/iPhone/MainWindow.xib
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/iPhone/main.m
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/TestBed.Net/obj/Debug/.NETFramework,Version=v4.0.AssemblyAttributes.cs
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/TestBed.Net/obj/Debug/TestBed.Net.csproj.AssemblyReference.cache
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/TestBed.Net/MainWindow.Designer.cs
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/TestBed.Net/MainWindow.cs
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/TestBed.Net/MainWindow.resx
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/TestBed.Net/Program.cs
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/TestBed.Net/Renderer.cs
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/TestBed.Net/Settings.cs
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/TestBed.Net/Test.cs
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/TestBed.Net/TestBed.Net.csproj
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Box2D.XNA.zip
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Platforms/Tizen.zip
    - /web/static/doc_controle/tp/Box2D/src/Contributions/Readme.txt
    - /web/static/doc_controle/tp/Makefile
    - /web/static/doc_controle/tp/TP_CONTROLEUR_Linux.cbp
    - /web/static/doc_controle/tp/TP_CONTROLEUR_Win.cbp
    - /web/static/doc_controle/tp/motion.txt
    - /web/static/doc_controle/M1IF37_CM_CONTROLEUR.pdf
    - /web/static/doc_controle/M1IF37_TP_CONTROLEUR-modele_rapport.docx
    - /web/static/doc_controle/M1IF37_TP_CONTROLEUR.pdf
    - /web/static/doc_controle/tp.zip
    - /web/static/images/im1.png
    - /web/static/images/im2.png
    - /web/static/images/M1if37.png
    - /web/static/doc/M1if37_edt.pdf
    - /web/static/doc/M1if37_edt.png
    - /web/static/doc/M1if37_PresOption.pdf
    - /web/static/doc/MLImage_edt.png
    - /web/static/doc/MLImage_PresOption.pdf
    ae9818c4
  • Alexandre MEYER's avatar
    Update file _index.md · 9d96180d
    Alexandre MEYER authored
    9d96180d
  • Alexandre MEYER's avatar
    Upload New File · 3fdb3d4d
    Alexandre MEYER authored
    3fdb3d4d
  • Alexandre MEYER's avatar
    Upload New File · b7279856
    Alexandre MEYER authored
    b7279856
  • Alexandre MEYER's avatar
    Update 4 files · d74c0684
    Alexandre MEYER authored
    - /web/static/images/mlimage.jpg
    - /web/static/images/im_all.png
    - /web/static/images/MLImage.jpg
    - /web/content/_index.md
    d74c0684
  • Alexandre MEYER's avatar
    Update file _index.md · b63f9c89
    Alexandre MEYER authored
    b63f9c89
  • Alexandre MEYER's avatar
    Delete MLImage_PresOption.pdf · c30ba698
    Alexandre MEYER authored
    c30ba698
  • Alexandre MEYER's avatar
    Upload New File · 5984f892
    Alexandre MEYER authored
    5984f892
  • Alexandre MEYER's avatar
    Replace MLImage_PresOption.pdf · d5a45ac7
    Alexandre MEYER authored
    d5a45ac7
  • Alexandre MEYER's avatar
    Update file _index.md · ecbeff36
    Alexandre MEYER authored
    ecbeff36
  • Alexandre MEYER's avatar
    Update 4 files · 8fb97205
    Alexandre MEYER authored
    - /web/content/am/video.md
    - /web/content/_index.md
    - /web/content/am/tp.md
    - /web/content/am/_index.md
    8fb97205
  • Alexandre MEYER's avatar
    Update file _index.md · d944f3c9
    Alexandre MEYER authored
    d944f3c9
  • Alexandre MEYER's avatar
    Update 3 files · 75ee9844
    Alexandre MEYER authored
    - /README.md
    - /web/content/jd/_index.html
    - /web/content/nb/_index.html
    75ee9844
  • Alexandre MEYER's avatar
    Update file README.md · af9ad75b
    Alexandre MEYER authored
    af9ad75b
  • Alexandre MEYER's avatar
    Update 4 files · aebca95a
    Alexandre MEYER authored
    - /web/content/jd/_index.html
    - /web/content/nb/_index.html
    - /web/content/jd/_index.md
    - /web/content/nb/_index.md
    aebca95a
  • Alexandre MEYER's avatar
    Update file config.toml · 067cc167
    Alexandre MEYER authored
    067cc167
  • DIGNE JULIE's avatar
    Update _index.md · e87902ce
    DIGNE JULIE authored
    e87902ce
Showing
with 161 additions and 532 deletions
# Site web et ressources de l'UE UE M1if37 Animation en synthèse d'image
# Site web et ressources de l'UE Apprentissage Profond Et Image
[La page de l'UE est ici](http://alexandre.meyer.pages.univ-lyon1.fr/m1if37-animation/)
[La page de l'UE est ici](http://alexandre.meyer.pages.univ-lyon1.fr/m2-apprentissage-profond-image/)
## Explication de la génération
Le site web est désormais fabriqué par ```Hugo``` (thème [congo](https://jpanther.github.io/congo/)). les sources se trouvent dans le répertoire ```web```.
Le site web est mis à jour par intégration continue (CI/CD) à chaque fois que vous faites un push (rien besoin d'autre, à part attendre quelques secondes). Le script d'intégration continue est ```.gitlab-ci.yml```. Pour voir le résultat du script de génération, [allez ici](https://forge.univ-lyon1.fr/Alexandre.Meyer/m1if37-animation/-/jobs) ou depuis l'interface dans CI/Jobs.
Le site web est désormais fabriqué par ```Hugo``` (thème [congo](https://jpanther.github.io/congo/)). les sources se trouvent dans le répertoire ```web```. Le site web est mis à jour par intégration continue (CI/CD) à chaque fois que vous faites un push (rien besoin d'autre, à part attendre quelques secondes). Le script d'intégration continue est ```.gitlab-ci.yml```. Pour voir le résultat du script de génération, [allez ici](https://forge.univ-lyon1.fr/Alexandre.Meyer/m2-apprentissage-profond-image/-/jobs) ou depuis l'interface dans CI/Jobs.
Le fichier ```site/config.toml``` permet de configurer la génération du site. Mais noramlement il n'y a pas besoin d'y toucher.
Le fichier ```site/config.toml``` permet de configurer la génération du site. Mais noramlement il n'y a pas besoin d'y toucher sauf pour changer les menus et le titre du site.
* Les pages web sont générées à partir du répertoire ```web/content```.
* La page principale du site est ```web/content/_index.html```. Il faut bien laissé le ```_```, il indique qu'il y a des sous-répertoires
* ```web/content/controle``` pour la partie "Conrtôle d'animation". ```web/content/controle/index.md``` produit la page de cette partie.
* ```web/content/personnage``` pour la partie "Animation de personnage virtuel".
* ```web/static``` : les fichiers autres (pdf, images, sujets, etc.) sont à ranger dedans. Par exemple, il y a
* ```web/content/am```: les pages de contenus de la partie AM
* ```web/content/jd```: les pages de contenus de la partie JD
* ```web/content/nb```: les pages de contenus de la partie NB
* ```web/static``` : les fichiers autres (pdf d'edt, images, etc.) sont à ranger dedans. Par exemple, il y a
* ```web/static/images``` pour les images du site;
* ```web/static/doc``` documents généraux de l'UE;
* ```web/static/doc_controle``` documents de la partie contrôle (NP);
* ```web/static/doc_charanim``` documents de la partie personnage (AM);
......@@ -32,5 +30,5 @@ Pour tester vos mises à jour en local :
Vous pouvez aussi essayer de contruire le site en static en faisant juste ```hugo``` : le site sera constuit dans le répertoire public.
Toutes les infos sont détaillées ici !
### D'autres infos
Pour convertir du DOKUWIKI en Markdown, on peut utiliser pandoc??? (todo) ou certains web en ligne.
\ No newline at end of file
baseURL = "http://alexandre.meyer.pages.univ-lyon1.fr/m1if37-animation/"
title = "M1if37 Animation en synthèse d'images"
#theme = "etch"
#theme = "ucax"
#theme = "paige"
#theme = "hugo-flex"
theme = "congo"
languageCode = "fr-FR"
enableInlineShortcodes = true
pygmentsCodeFences = true
pygmentsUseClasses = true
publishDir = "public"
# [author]
# name = "Alexandre Meyer"
# image = "img/author.jpg"
# headline = "M1if37"
# bio = ""
[params]
description = "Animation en synthèse d'images"
copyright = ""
dark = "auto"
highlight = true
mainSections = "personnage;controle;posts"
#color = "gray" # Any color in CSS syntax
#width = "52rem" # Any length in CSS syntax
colorScheme = "fire"
# footer= ""
# rss = ""
article.showDate = false
# [[footer]]
# name = "Privacy"
# url = "https://external-link"
# - name: Aboutaaa
# url: about/
# weight: 1
[menu]
[[menu.main]]
identifier = "Physique"
name = "Physique"
title = "Physique"
url = "https://perso.liris.cnrs.fr/fzara/Web/M1Animation.html"
weight = 1
[[menu.main]]
identifier = "Personnage"
name = "Personnage"
title = "Personnage"
url = "/personnage/"
weight = 2
[[menu.main]]
identifier = "Controle"
name = "Controle"
title = "Controle"
url = "/controle/"
weight = 3
[permalinks]
posts = "/:title/"
[markup.goldmark.renderer]
# Allow HTML in Markdown
unsafe = true
[markup.tableOfContents]
ordered = true
baseURL = "http://alexandre.meyer.pages.univ-lyon1.fr/m2-apprentissage-profond-image/"
title = "Apprentissage et Image"
#theme = "etch"
#theme = "ucax"
#theme = "paige"
#theme = "hugo-flex"
theme = "congo"
languageCode = "fr-FR"
enableInlineShortcodes = true
pygmentsCodeFences = true
pygmentsUseClasses = true
publishDir = "public"
# [author]
# name = "Alexandre Meyer"
# image = "img/author.jpg"
# headline = "MLImage"
# bio = ""
[params]
description = "Apprentissage Profond Et Image"
copyright = ""
dark = "auto"
highlight = true
mainSections = "personnage;controle;posts"
#color = "gray" # Any color in CSS syntax
#width = "52rem" # Any length in CSS syntax
colorScheme = "fire"
# footer= ""
# rss = ""
article.showDate = false
# [[footer]]
# name = "Privacy"
# url = "https://external-link"
# - name: Aboutaaa
# url: about/
# weight: 1
[menu]
[[menu.main]]
identifier = "PartieAM"
name = "PartieAM"
title = "PartieAM"
url = "/am/"
weight = 1
[[menu.main]]
identifier = "PartieJD"
name = "PartieJD"
title = "PartieJD"
url = "/jd/"
weight = 2
[[menu.main]]
identifier = "PartieNB"
name = "PartieNB"
title = "PartieNB"
url = "/nb/"
weight = 3
[permalinks]
posts = "/:title/"
[markup.goldmark.renderer]
# Allow HTML in Markdown
unsafe = true
[markup.tableOfContents]
ordered = true
# Master 1 Informatique - UE M1if37 Animation en synthèse d'image (3 ECTS)
# Master 2 ID3D et IA - UE Apprentissage Machine Et Image (3 ECTS)
Responsables de l'enseignement : [Alexandre Meyer](
http://liris.cnrs.fr/alexandre.meyer), [Nicolas Pronost](
http://liris.cnrs.fr/nicolas.pronost) et [Florence Zara](
http://liris.cnrs.fr/florence.zara) - LIRIS, Université Lyon 1
Responsables de l'enseignement : [Alexandre Meyer](http://liris.cnrs.fr/alexandre.meyer),
[Julie Digne](http://liris.cnrs.fr/jule.digne)
et [Nicolas Bonneel](http://liris.cnrs.fr/nicolas.bonneel) - LIRIS, Université Lyon 1
Volume horaire : 10h30 CM, 19h30 TP
Volume horaire : 30h (CM/TP)
![im_all.png](images/im_all.png)
![MLImage_all.jpg](images/MLImage_all.jpg)
## Objectif de l'UE
<p style="text-align:justify;">M1if37 est une UE optionnelle de la 1ère année du Master d'Informatique de l'Université Lyon 1. Les cours ont lieu au semestre 2 (printemps). L'objectif de l'UE est de donner les bases de l'animation en synthèse d'images. Nous aborderons les deux grandes familles de méthodes. L'animation basée sur des données, par exemple pour l'animation d'humain virtuel (données issues de capture de mouvement). Et l'animation basée sur un modèle physique pour la simulation de phénomènes naturels comme le mouvement de textiles ou de fluide. L'UE laissera une grande part à l'application pratique avec la réalisation de TPs en C++/OpenGL proposant d'animer par exemple des humains virtuels, des vêtements, des cordes, une surface d'eau, etc.</p>
<p style="text-align:justify;">Il s'agit d'une UE optionnelle de la 2ère année du Master d'Informatique parcours IA et ID3D de l'Université Lyon 1. Les cours ont lieu au semestre 1 (automne). L'objectif de l'UE est de donner les bases en apprentissage machine (notamment apprentissage profond) pour les problèmes d'images. Le cours présentera d'abord les problèmes classiques liés à l’image comme la classification, l'extraction d'informations, la reconnaissance de formes, le suivi, la segmentation, etc. Un large panel des différents types de réseaux (CNN, auto-encoder, LTSM, GAN, etc.) sera donné, ainsi que leurs applications à des problèmes élaborés allant de l’édition (super-résolution, transfert de motifs, de palettes) jusqu’aux méthodes génératives (génération de visages, de maillage, d’animations, de textures, etc.) plus ou moins guidé par l’utilisateur.
</p>
[Les slides de la présentation des options sont ici.](doc/M1if37_PresOption.pdf)
[Les slides de la présentation des options sont ici.](doc/MLImage_PresOption.pdf)
## Thématiques abordées
### Animation par modèles physiques (F. Zara) - 4h30 CM, 6h30 TP
* Concepts physiques (forces, lois de Newton)
* Méthodes d'intégration numérique
* [La page web de cette partie](https://perso.liris.cnrs.fr/fzara/Web/M1Animation.html)
### Deep learning et images (A. Meyer)
* Les bases de l'apprentissage profond : espace latent, régularisation, etc.
* CNN, Autoencodeur
* Segmentation : U-Net
* Tracking : YOLO
* Capture du squelette (type OpenPose, XNect, etc.)
* Notion de transformer/attention pour la reconnaissance
### Deep learning génératif et deep learning géometrique (J. Digne)
* Génération d'images: GANs et Réseaux de diffusion
* Apprentissage pour les données géometriques:
* Nuages de points (pointNet, etc.)
* Maillages (MeshConv, etc.)
* Diffusion sur les surfaces
* Représentations neuronales implicites (IGR, SIREN)
* Champs de radiance neuronaux (Nerf)
### Animation de personnage (A. Meyer) - 4h30 CM, 6h30 TP
* Animation basée squelette
* Déformation de maillage (skinning)
* [La page web de cette partie](https://perso.liris.cnrs.fr/alexandre.meyer/public_html/www/doku.php?id=charanim_m1#master_1_informatique_-_ue_m1if37_animation_en_synthese_d_image)
### Transport optimal (N. Bonneel)
* Introduction au transport optimal
* ...
### Contrôle de mouvement (Nicolas Pronost) - 1h30 CM, 6h30 TP
* Mouvement d'objets rigides articulés
* [La page web de cette partie](controle)
## Emploi du temps 2023
![documents/M1if37_edt.png](doc/M1if37_edt.png)
Les cours sont le Jeudi après-midi entre octobre et fin janvier.
L'edt détaillé doit encore être finalisé ...
* Cours en salle TD10 Nautibus
* TP en salles TP11, TP12 Nautibus
## Modalités de contrôle des connaissances (MCC)
* **1 note de CCF** portant sur les 3 parties du cours
* **3 notes de TP** : TP F. Zara, TP A. Meyer, TP N. Pronost (code + rapport + démo ou vidéo)
* **Dates des évaluations** :
* Examen écrit : mercredi 24 mai 2023 8h-9h30 en C3
* Démo de TP : mercredi 24 mai 2023, de 9h45 à 12h en TP11, TP12
* Date limite de rendu des 3 archives : mercredi 24 mai 2023 12h
* **Modalité de rendu des TPs :** <p style="text-align:justify;">
* Une archive sera à déposer sur TOMUSS (dans les 3 colonnes correspondantes). Cette archive contiendra le code du TP + un rapport.
* Nous vous demandons également de mettre dans les 3 autres colonnes correspondantes de TOMUSS, l'URL pour accéder à une vidéo de votre projet, si vous ne faites pas de démo (car nous ne le compilerons pas forcément, donc il faut montrer tout votre travail).</p>
TBA
---
title: ""
description: "Partie A. Meyer"
---
# Partie Les base du Deep Learning pour l'image
* Alexandre Meyer
* [L'ancienne page de cette partie](https://perso.liris.cnrs.fr/alexandre.meyer/public_html/www/doku.php?id=image_deeplearning)
## Cours
## Les vidéos des CM (2020)
## Le TP
# TP
TODO
## TP partie 1
TODO
# Master 1 Informatique - UE M1if37 Animation en synthèse d'image (3 ECTS)
## Contrôle de mouvement
Télécharger [les transparents du cours](../doc_controle/M1IF37_CM_CONTROLEUR.pdf)
Télécharger [l'énoncé du TP](../doc_controle/M1IF37_TP_CONTROLEUR.pdf)
Accéder [aux ressources pour le TP](../doc_controle/tp.zip)
Télécharger [le modèle pour le rapport](../doc_controle/M1IF37_TP_CONTROLEUR-modele_rapport.docx)
\ No newline at end of file
---
title: ""
description: "Partie J. Digne"
---
# Partie de Julie Digne
---
title: ""
description: "Partie N. Bonneel"
---
# Partie de N. Bonneel
---
title: ""
description: "Partie Animation de personnage"
---
# Partie Animation de personnage
* Alexandre Meyer
* 4h30 CM, 6h30 TP
* [L'ancienne page de cette partie](https://perso.liris.cnrs.fr/alexandre.meyer/public_html/www/doku.php?id=charanim_m1#master_1_informatique_-_ue_m1if37_animation_en_synthese_d_image)
![](../doc_charanim/charanim_tpose.jpg)
## Cours
* [Systèmes articulés : cinématique directe](https://perso.liris.cnrs.fr/alexandre.meyer/teaching/master_charanim/aPDF_COURS_M1/M1_1_SkeletonBasedAnimation.pdf)
* [Edition d'animations, Graphe d'animations](https://perso.liris.cnrs.fr/alexandre.meyer/teaching/master_charanim/aPDF_COURS_M1/M1_2_MotionControlAndEditing.pdf)
* [Capture de mouvements](https://perso.liris.cnrs.fr/alexandre.meyer/teaching/master_charanim/aPDF_COURS_M1/M1_3_MotionCapture.pdf)
## Les vidéos des 3 CM (2020)
[Les vidéos](video)
## Le TP
* [TP animation de personnage virtuel](tp)
* [[master_charanim_code|Le code initial]]
#### Rendu
Les archives sont à rendre sur TOMUSS
* TP Animation de personnage virtuel
* vous devez rendre une archive avec un readme.txt ou readme.md expliquant ce que vous avez fait et comment lancer le programme
* une VIDEO de DEMO ou une démo en LIVE
* Barème "Personnage"
* (5 points) TP 1ère partie : affichage d'une animation BVH
* (3 points) Contrôleur d'animation : la base (pilotage au clavier d'un déplacement)
* Machine à état (4 points maximum)
* basique : pour une machine à état de base avec 4 animations : iddle, marcher, courir, sauter ou kick
* avancé : une machine à état plus complète avec de nombreuses animations (une dizaine) : voir celles du répertoire motionGraph_second_life, etc.
* Motion Graphe (6 points max)
* basique : transition vers un autre animation en cherchant à la volée une transition compatible
* avancé : un motion graph construit automatiquement en pré-calcul (voir la fin de l'énoncé qui pointe vers un complément de sujet).
* (3 points) Interpolation entre 2 frames, à utilise pour les transitions ou pour une bonne gestion du temps
* (1 points) Collision entre personnage et sphères (voir le code PhysicalWorld)
* (1 points) bonus de qualité/cohérence de la scène
* Le total fait plus que 20 car les points FSM/graphe d'animation sont à comprendre avec un OU : la machine à état rapporte moins de points, car bien moins difficile.
# TP d'Animation de personnage (M1)
## TP partie 1 : affichage
![](/charanim_interpolation.png)
Vous allez créer un module Skeleton.h/.cpp (ce code n'est qu'indicatif, vous êtes libre de vos structures de données). Cette classe va stocker un tableau de toutes les articulations (SkeletonJoint) du squelette et pour chaque articulation stocke l'identifiant de l'articulation parent et la matrice de passage de l'articulation vers le monde.
Le fichier est déjà présent dans le code départ avec des TODO à compléter :
```
class Skeleton
{
public:
struct SkeletonJoint
{
int m_parentId; // Le numéro du père dans le tableau de CAJoint de CASkeleton
Transform m_l2w; // La matrice passant du repère de l'articulation vers le monde
};
Skeleton() {}
//! Créer un squelette ayant la même structure que définit dans le BVH c'est à dire
//! creer le tableau de SkeletonJoint à la bonne taille, avec les parentId initialsé pour chaque case
void init(const BVH& bvh);
//! Renvoie la position de l'articulation i en multipliant le m_l2w par le Point(0,0,0)
Point getJointPosition(int i) const;
//! Renvoie l'identifiant de l'articulation père de l'articulation numéro i
int getParentId(const int i) const;
//! Renvoie le nombre d'articulation
int numberOfJoint() const;
//! Positionne ce squelette dans la position n du BVH.
//! Assez proche de la fonction récursive (question 1), mais range la matrice (Transform)
//! dans la case du tableau. Pour obtenir la matrice allant de l'articulation local vers le monde,
//! il faut multiplier la matrice allant de l'articulation vers son père à la matrice du père allant de
//! l'articulation du père vers le monde.
void setPose(const BVH& bvh, int frameNumber);
protected:
//! L'ensemble des articulations.
//! Remarque : la notion de hiérarchie (arbre) n'est plus nécessaire ici,
//! pour tracer les os on utilise l'information "parentID" de la class CAJoint
std::vector<SkeletonJoint> m_joint;
};
```
Dans le Viewer vous devez :
* Déclarer un Skeleton en variable de la classe
* écrire une fonction qui fait l'affichage
```
void CharAnimViewer::skeletonDraw(const Skeleton& ske);
```
* initaliser l'instance de Skeleton dans la fonction init
* Appeler setPose dans la fonction update
Remarques :
* On sépare bien l'affichage de la gestion du squelette pour pouvoir réutiliser le code Skeleton avec une autre librairie d'affichage.
* On ne s'occupe pas du temps pour l'instant mais uniquement du numéro de la posture.\\
* Vous pouvez trouvez des BVH dans le répertoire data du code de départ. Notamment le fichier robot.bvh pour debuguer.
## TP partie 2 : Contrôleur d'animation
##### Déplacer une sphère au clavier
Ecrivez une class CharacterControler qui à partir des touches claviers contrôlera le déplacement d'un personnage. Dans une 1er temps faites juste déplacer une boule : accélérer, freiner, tourner à droite, tourner à gauche, sauter. Ce contrôleur comportera une position et une vitesse. La vitesse sera modifiée par les flèches (ou un pad) et la position sera mise à jour dans la fonction update du Viewer en utilisant le paramètre "delta" recu par la fonction update.
Une classe de Controller peut ressembler à ceci.
```
class CharacterController
{
public:
CharacterController() : ... {}
void update(const float dt);
void turnXZ(const float& rot_angle_v);
void accelerate(const float& speed_inc);
void setVelocityMax(const float vmax);
const Point position() const;
const Vector direction() const;
float velocity() const;
const Transform& controller2world() const { return m_ch2w; }
protected:
Transform m_ch2w; // matrice du character vers le monde
// le personnage se déplace vers X
// il tourne autour de Y
// Z est sa direction droite
float m_v; // le vecteur vitesse est m_v * m_ch2w * Vector(1,0,0)
float m_vMax; // ne peut pas accélérer plus que m_vMax
};
```
##### Déplacer un personnage au clavier
Dans un 2e temps, votre contrôleur comportera également une série
d'animation bvh : attendre, marcher, courir, et donner un coup de pied.
En fonction de l'action que veut faire le joueur appuyant sur des
touches vous changerez d'animation. Vous coderez la machine à états
finis (FiniteStateMachine) de l'image ci-dessous. Les cercles sont les
états (l'animation en train d'être jouée), les rectangles rouges sont
les éventements et les carrés bleus sont les actions à effectuer
(fonction de la classe). Ce changement se fera brutalement. Ne vous
occupez pas non plus des pieds qui glissent sur le sol. Un meilleur
contrôle peut-être fait la construction d'un graphe d'animation.
![](/fsm.png)
## TP partie 3 : Transition et plus
a) Pour améliorer le réalisme, il serait bon de faire les transitions
entre deux animations en choisissant deux poses des animations qui sont
proches. Pour cela il faut calculer la distance entre deux poses
d'animations (Voir les infos dans le sujet Graphe d'animation).
b) Pour aller encore plus loin, on peut construire un automate de
manière complètement automatique, on appelle alors ceci un graphe
d'animation. [Voir le sujets de TP
suivants.](https://perso.liris.cnrs.fr/alexandre.meyer/public_html/www/doku.php?id=master_charanim_tp_m2_cpp&s[]=graphe#tp_3e_partiegraphe_d_animation)
a.bis) Indépendamment de la machine à état ou du graphe, si vous voulez
gérer le temps de manière plus juste, il faudrait récupérer le temps
réellement écoulé depuis l'affichage précédent. Ceci vous fera ne vous
fera pas tomber précisément sur une frame stocké dans le clip (BVH). Il
faudra donc interpoler entre les 2 frames. Le résultat sera de l'ordre
du détail lors de l'affichage mais si vous voulez que votre moteur
d'animation tourne sur toutes les machines indépendamment du CPU, il
faut le faire. Cette interpolation peut également servir pour passer
d'un clip à un autre.
## TP partie 3.PLUS : graphe d'animation
* -* [Motion Graph de l'article original](http://www.cs.wisc.edu/graphics/Gallery/kovar.vol/MoGraphs/);
* Des BVH avec squelette compatible pour le graphe sont donné dans le git, répertoire Second\_Life.
Nous avons remarqué dans la partie 1 que la transition d'animation ne fonctionne bien que lorsque les deux poses du squelette sont assez proches (il faut bien sûr également que les deux squelettes aient la même topologie). L'idée d'un graphe d'animation est de construire un graphe où chaque noeud correspond à une pose d'une animation et où chaque arrête définit qu'une transition est possible entre les deux poses.
#### Comparaison de deux poses d'animation
Pour construire un graphe d'animation à partir d'une ou plusieurs animations, on doit être capable de comparer deux poses d'animation. Une distance de 0 indique que les deux poses sont identiques. Une distance grande indique que les 2 poses sont très différentes.
A partir de la classe Skeleton, écrivez la fonction de calcul de distance entre deux poses de squelette. Cette fonction est déjà présente dans la classe Skeleton plus haut mais en commentaire. Cette fonction calcule itérativement sur toutes les articulations la somme des distances euclidienne entre chaque articulation de deux squelettes aillant la même topologie mais dans des poses différentes.
```
friend float Skeleton::Distance(const Skeleton& a, const Skeleton& b);
```
Remarque : il est important de ne pas tenir compte de la translation et de la rotation de l'articulation racine. Une même pose a deux endroits du monde doit donner une distance de 0. Dans un 1er temps, votre personnage aura son noeud root centré en (0,0,0), puis dans la dernière partie de cette question, vous traiterez le centre de gravité.
#### Construction du graphe
Ecrivez un module MotionGraph qui contiendra un ensemble de BVH et le graphe d'animation définissant des transitions dans cette ensemble d'animation.
* Un noeud du graphe=(Identifiant d'une animation + un numéro de pose);
* un arc du graphe entre deux poses indique la transition possible entre ces deux poses. Deux poses sont compatibles à la transition quand la distance entre les deux squelettes sont inférieurs à un certain seuil fixé empiriquement.
Vous pouvez créer un module CACore/CAMotionGraph.h/.cpp
```
class MotionGraph
{
...
protected:
//! L'ensemble des BVH du graphe d'animation
std::vector<BVH> m_BVH;
//! Un noeud du graphe d'animation est repéré par un entier=un identifiant
typedef int GrapheNodeID;
//! Une animation BVH est repérée par un identifiant=un entier
typedef int BVH_ID;
//! Un noeud du graphe contient l'identifiant de l'animation, le numéro
//! de la frame et les identifiants des noeuds successeurs
//! Remarque : du code plus "joli" aurait créer une classe CAGrapheNode
struct GrapheNode
{
BVH_ID id_bvh;
int frame;
std::vector<GrapheNodeID> ids_next; //! Liste des nœuds successeurs
};
//! Tous les noeuds du graphe d'animation
std::vector<GrapheNode> m_GrapheNode;
};
```
#### Navigation dans le graphe
Une fois ce graphe construit, on peut définir différente manière de naviguer dedans :
* Un parcours aléatoire dans le graphe (juste pour vérifier que le graphe est ok);
* L'utilisateur donne des directions au clavier => le parcours dans le graphe est conditionné par ces contraintes.
#### Gestion correcte du centre de gravité
Pour chaque arc du graphe, vous devez stocker la transformation (soit une matrice 4x4, soit un quaternion et une translation) du noeud root (souvent le centre de gravité) entre la pose i et la pose i+1. Cette transformation sera appliqué au noeud root de votre personnage quand il empruntera l'arc.
## NON DEMANDE CETTE ANNEE : Animation physique (voir la partie de F. Zara à la place)
#### Particules
![](/charanim_ball.png)
Dans la fonction init de la class CharAnimViewer indiquez un nombre de particules non nul :
```
m_world.setParticlesCount( 10 );
```
Dans la fonction render, il faut afficher les particules en dé-commentant cette ligne :
```
m_world.draw();
```
Vous verrez alors les particules s'afficher, mais elles ne seront pas animées. Pour calculer la physique sur les particules, il y a deux
classes **PhysicalWorld** et **Particle**. Regardez le fichier Particles.h. Il faudra compléter les fonctions update, collision et groundCollision :
```
void update(const float dt = 0.1f)
void groundCollision()
void collision(const Point& p, const float radius)
```
Le code de update doit mettre à jour la vitesse avec l'équation F=m.a où a = dv/dt
Et mettre à jour la position avec l'équation habituelle p = p + v.t
[Regardez les explications dans la vidéo de cours ou ici](https://perso.liris.cnrs.fr/alexandre.meyer/teaching/master_charanim/aPDF_COURS_M1/M1_TP_PhysicsAnimation_ParticulesMassesRessorts.pdf).
#### Interaction personnage/particules
Pour ajouter l'interaction entre votre personnage et des boules/sphères se trouvant dans l'environnement, il faut appeler PhysicalWorld::collision depuis CharAnimViewer::update en parcourant toutes les articulations du personnage. Dans un 1er temps, vous pouvez juste faire disparaitre les particules touchées en faisant passer le rayon de la particule à -1 et faire en sorte que les particules de rayon négatif ne soient pas affichées. Puis ajoutez dans Particle::collision du code pour déplacer les particules en collisions (résoudre les collisions) et changer leur vecteur vitesse.
#### Tissus
Un tissu est composé d'un maillage de Masses/Ressorts. Ajoutez une classe Spring qui va comporter :
* la raideur du ressort
* la longueur au repos du ressort
* idA et idB : l'identifiant des 2 particules aux extrémités du ressort. Ces 2 identifiants sont l'indices de deux particules dans le tableau de particules stocké dans la classe PhysicalWorld.
Munissez cette classe d'une fonction *addForce* qui calcule les forces qu'applique le ressort sur les 2 particules.
```
void Spring::addForce(vector<Particles>& part, const float dt)
```
Dans la classe PhysicalWorld, ajoutez un tableau de ressort :
```
std::vector<Spring> m_springs;
```
Le constructeur de PhysicalWorld créera un tissu avec des masses ressorts sous la forme de l'image ci-dessous. La génération se fera procéduralement.
![](/mass-spring.jpg)
#### Interaction avec le personnage
Normalement, le personnage va pouvoir interagir avec le tissu en passant dessous ...
# CM Animation de personnages virtuels (Master 1ère année)
* CM = Cours Magistral
* Vous pouvez très facilement faire une pause au moment des
exercices, revenir en arrière et/ou accélérer la vitesse de la vidéo
depuis les options de YouTube (x 1.50 ou plus vite)
## CM1 : Animation basée squelette
Il y a 3 vidéos pour le CM1 :
* L'introduction
* Un exercice d'affichage de squelette animé très simple
* Afficage récursif d'un squelette à partir de la structure de données, présentation du format BVH, prise en main du code du TP
#### CM1.a Introduction
<iframe width="560" height="315" src="//www.youtube.com/embed/TNSesEPrAn0 " frameborder="0" allowfullscreen></iframe>
#### CM1.b Exercice
<iframe width="560" height="315" src="//www.youtube.com/embed/1Js-9r28T-c" frameborder="0" allowfullscreen></iframe>
#### CM1.c Arbre/Squelette, Affichage récursif et BVH
<iframe width="560" height="315" src="//www.youtube.com/embed/1Y8VE9WrSfw" frameborder="0" allowfullscreen></iframe>
## CM2 : Edition d\'animations et Contrôle d\'un Personnage Virtuel
<iframe width="560" height="315" src="//www.youtube.com/embed/DfsH9bIIisA" frameborder="0" allowfullscreen></iframe>
## CM3 : Animation et Capture de Mouvements
<iframe width="560" height="315" src="//www.youtube.com/embed/7t98WLxikOo" frameborder="0" allowfullscreen></iframe>
File deleted
File deleted
File added
web/static/doc_charanim/charanim_tpose.jpg

3.44 KiB

File deleted
File deleted
File deleted
File deleted