Add initial prototype.

This commit is contained in:
Rod Kay
2022-07-31 17:34:54 +10:00
commit 54a53b2ac0
1421 changed files with 358874 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
#!/bin/bash
set -e
########
## Clean
#
rm -fr ./dsa
gprclean -r -P ../gel_demo.gpr -Xrestrictions=xgc -Xopengl_platform=glx -Xopengl_profile=lean
#########
## Build
#
set +e
po_gnatdist -Xrestrictions=xgc -Xopengl_platform=glx -Xopengl_profile=lean -P demo_dsa.gpr simple_dsa.cfg
set -e
cp dsa/x86_64-unknown-linux-gnu/obj/*.o dsa/x86_64-unknown-linux-gnu/partitions/simple_dsa/server_partition
cp dsa/x86_64-unknown-linux-gnu/obj/*.o dsa/x86_64-unknown-linux-gnu/partitions/simple_dsa/client_partition
po_gnatdist -Xrestrictions=xgc -Xopengl_platform=glx -Xopengl_profile=lean -P demo_dsa.gpr simple_dsa.cfg

View File

@@ -0,0 +1,26 @@
with
"../gel_demo",
"lace_shared";
project Demo_dsa
is
for Source_Dirs use (".");
for Object_Dir use "build";
for Exec_Dir use ".";
package DSA
is
for Configuration use "simple_dsa";
end DSA;
package Ide renames Lace_shared.Ide;
package Builder renames Lace_shared.Builder;
package Compiler renames Lace_shared.Compiler;
package Binder renames Lace_shared.Binder;
package Linker is
for Default_Switches ("ada") use ("-g", "-lexpat", "-lGL", "-lGLU", "-lX11", "-lm");
end Linker;
end Demo_dsa;

View File

@@ -0,0 +1,13 @@
with
gel_demo_Client;
procedure launch_Client
--
-- Launches the remote client.
--
is
begin
gel_demo_Client.item.start;
end launch_Client;

View File

@@ -0,0 +1,13 @@
with
gel_demo_Server;
procedure launch_Server
--
-- Launches the remote server.
--
is
begin
gel_demo_Server.item.start;
end launch_Server;

View File

@@ -0,0 +1,53 @@
configuration simple_DSA
is
pragma Starter (none);
--
-- Tell 'po_gnatdist' to not create any startup script or launcher (more on this in a later tute).
-- We will launch our Server and Client partitions manually from a console.
-- Server
--
server_Partition : partition := (gel_demo_Services);
--
-- Declare the Server partition and assign the 'Server' remote call interface package to this partition.
procedure launch_Server is in server_Partition;
--
-- Tell po_gnatdist that the 'start_Server' procedure is the the Servers 'main' subprogram or launcher.
-- Client
--
client_Partition : partition;
--
-- Declare the Client partition (which has no remote call interface package associated with it, so no 'initialisation' is required).
procedure launch_Client;
--
-- Declare the Clients 'main' subprogram or launcher.
for client_Partition'Main use launch_Client;
--
-- Tell po_gnatdist to assign the above declared 'start_Client' procedure as the Clients 'main' subprogram or launcher.
for client_Partition'Termination use Local_Termination;
--
-- Tell po_Gnatdist that Clients may terminate locally (more on this later).
-- Misc
--
for Partition'Directory use "bin";
--
-- Ask po_gnatdist to place the built Client and Server partition executables in the './bin' sub-folder.
end simple_DSA;

View File

@@ -0,0 +1,586 @@
###############################################################################
# PolyORB configuration file.
# $Id: polyorb.conf 123179 2008-03-21 21:10:55Z duff $
###############################################################################
# The syntax of the configuration file is:
# - empty lines and lines that have a '#' in column 1 are
# ignored;
# - sections can be started by lines of the form
# '[' SECTION-NAME ']';
# - variable assignments can be performed by lines of the
# form VARIABLE-NAME '=' VALUE.
# Any variable assignment is local to a section.
#
# Assignments that occur before the first section declaration
# are relative to section [environment].
# Section and variable names are case sensitive.
#
# A variable Var.Iable in section [Sec] can be overridden by
# setting environment variable "POLYORB_SEC_VAR_IABLE"
# (see Make_Env_Name in body).
# Furthermore, each time a resolved in that section value
# starts with "file:", the contents of the file is used instead.
###############################################################################
# Logging facility
#
# Note: debug will work iff PolyORB has been configured with 'debug' enabled
[log]
#default=notice
#
# Middleware core
#
#polyorb.any=debug
#polyorb.any.exceptionlist=debug
#polyorb.any.nvlist=debug
#polyorb.asynch_ev.sockets=debug
#polyorb.binding_data=debug
#polyorb.binding_objects=debug
#polyorb.buffers=debug
#polyorb.buffers_show=debug
#polyorb.call_back=debug
#polyorb.components=debug
#polyorb.configuration=debug
#polyorb.errors=debug
#polyorb.errors.helper=debug
#polyorb.exceptions=debug
#polyorb.exceptions.stack=debug
#polyorb.filters=debug
#polyorb.filters.slicers=debug
#polyorb.filters.fragmenter=debug
#polyorb.initialization=debug
#polyorb.lanes=debug
#polyorb.minimal_servant=debug
#polyorb.orb=debug
#polyorb.orb_controller=debug
#polyorb.orb_controller_status=debug
#polyorb.orb.no_tasking=debug
#polyorb.orb.thread_per_request=debug
#polyorb.orb.thread_per_session=debug
#polyorb.orb.thread_pool=debug
#polyorb.protocols=debug
#polyorb.protocols.echo=debug
#polyorb.references=debug
#polyorb.references.binding=debug
#polyorb.references.corbaloc=debug
#polyorb.references.ior=debug
#polyorb.references.uri=debug
#polyorb.representations.cdr=debug
#polyorb.requests=debug
#polyorb.request_qos=debug
#polyorb.request_scheduler.servant_lane=debug
#polyorb.servants.group_servants=debug
#polyorb.smart_pointers=debug
#polyorb.tasking.advanced_mutexes=debug
#polyorb.tasking.condition_variables=debug
#polyorb.tasking.mutexes=debug
#polyorb.tasking.rw_locks=debug
#polyorb.tasking.semaphores=debug
#polyorb.tasking.watchers=debug
#polyorb.transport.connected=debug
#polyorb.transport.connected.sockets=debug
#polyorb.transport.connected.sockets.ssl=debug
#polyorb.utils.configuration_file=debug
#polyorb.utils.sockets=debug
#polyorb.utils.tcp_access_points=debug
#
# POA
#
#polyorb.obj_adapters.group_object_adapter=debug
#polyorb.object_maps.system=debug
#polyorb.object_maps.user=debug
#polyorb.poa=debug
#polyorb.poa.basic_poa=debug
#polyorb.poa_manager.basic_manager=debug
#polyorb.poa_types=debug
#polyorb.poa_policies.thread_policy.single_thread=debug
#polyorb.poa_policies.thread_policy.main_thread=debug
#polyorb.rt_poa.basic_rt_poa=debug
#
# CORBA personality
#
#corba.fixed_point=debug
#corba.orb=debug
#corba.serverrequest=debug
#polyorb.corba_p.exceptions=debug
#polyorb.corba_p.initial_references=debug
#polyorb.corba_p.server_tools=debug
#polyorb.if_descriptors.corba_ir=debug
#portableserver=debug
#portableserver.poa=debug
#
# DSA personality
#
#polyorb.dsa_p.partitions=debug
#polyorb.dsa_p.remote_launch=debug
#system.dsa_services=debug
#system.partition_interface=debug
#
#polyorb.qos.term_manager_info=debug
#polyorb.termination_manager=debug
#polyorb.termination_manager.bootstrap=debug
#
# GIOP personality
#
#polyorb.binding_data.giop.common_sockets=debug
#polyorb.giop_p.exceptions=debug
#polyorb.giop_p.service_contexts=debug
#polyorb.giop_p.tagged_components=debug
#polyorb.protocols.giop=debug
#polyorb.protocols.giop.common=debug
#polyorb.protocols.giop.giop_1_0=debug
#polyorb.protocols.giop.giop_1_1=debug
#polyorb.protocols.giop.giop_1_2=debug
#polyorb.representations.cdr.giop_utils=debug
#
# IIOP Personality
#
#polyorb.binding_data.giop.iiop=debug
#
# DIOP Personality
#
#polyorb.binding_data.giop.diop=debug
#
# MIOP Personality
#
#polyorb.binding_data.giop.uipmc=debug
#polyorb.filters.miop=debug
#polyorb.filters.miop.miop_in=debug
#polyorb.filters.miop.miop_out=debug
#polyorb.miop_p.tagged_components=debug
#
# MOMA personality
#
#moma.configuration.server=debug
#moma.configuration=debug
#moma.message_consumers=debug
#moma.message_producers=debug
#moma.provider.message_consumer=debug
#moma.provider.message_handler=debug
#moma.provider.message_pool=debug
#moma.provider.message_producer=debug
#moma.provider.routers=debug
#moma.provider.topic_datas=debug
#moma.types=debug
#
# SOAP personality
#
#polyorb.filters.http=debug
#polyorb.protocols.soap_pr=debug
#soap.message.xml=debug
#soap.types=debug
#
# SRP personality
#
#polyorb.protocols.srp=debug
#polyorb.representations.srp=debug
#
# Tasking profiles
#
#polyorb.tasking.profiles.full_tasking.condition_variables=debug
#polyorb.tasking.profiles.full_tasking.mutexes=debug
#polyorb.tasking.profiles.full_tasking.threads=debug
#polyorb.tasking.profiles.ravenscar.condition_variables=debug
#polyorb.tasking.profiles.ravenscar.index_manager=debug
#polyorb.tasking.profiles.ravenscar.mutexes=debug
#polyorb.tasking.profiles.ravenscar.threads=debug
#
# Security Service
#
#polyorb.security.authentication_mechanisms=debug
#polyorb.security.credentials=debug
#polyorb.security.exported_names=debug
[smart_pointers]
# Fine-grained control of debugging traces for smart pointers events
#default.trace=false
#POLYORB.ANY.ANY_CONTAINER.trace=true
#POLYORB.ANY.NVLIST.OBJECT.trace=true
#POLYORB.BINDING_OBJECTS.BINDING_OBJECT.trace=true
#POLYORB.CORBA_P.POLICY.POLICY_OBJECT_TYPE.trace=true
#POLYORB.OBJ_ADAPTERS.GROUP_OBJECT_ADAPTER.GROUP_OBJECT_ADAPTER.trace=true
#POLYORB.POA.BASIC_POA.BASIC_OBJ_ADAPTER.trace=true
#POLYORB.POA_MANAGER.BASIC_MANAGER.BASIC_POA_MANAGER.trace=true
#POLYORB.REFERENCES.REFERENCE_INFO.trace=true
###############################################################################
# CORBA parameters
#
[corba]
#name_service=IOR:xxx
#ir_service=IOR:xxx
#policy_domain_manager=IOR:xxx
#replication_manager=IOR:xxx
###############################################################################
# DSA parameters
#
[dsa]
#name_service=IOR:xxx
#delay_between_failed_requests=1000
#max_failed_requests=10
#termination_initiator=false
#termination_policy=global_termination
#tm_time_between_waves=1000
#tm_time_before_start=5000
#detach=false
#rsh_command=ssh
#rsh_options=-f
#force_rsh=false
###############################################################################
# GIOP parameters
#
[giop]
###############################################################
# Native code sets
#
# Available char data code sets:
# 16#00010001# ISO 8859-1:1987; Latin Alphabet No. 1
# 16#05010001# X/Open UTF-8; UCS Transformation Format 8 (UTF-8)
#
# Available wchar data code sets:
# 16#00010100# ISO/IEC 10646-1:1993; UCS-2, Level 1
# 16#00010109# ISO/IEC 10646-1:1993;
# UTF-16, UCS Transformation Format 16-bit form
#
#giop.native_char_code_set=16#00010001#
#giop.native_wchar_code_set=16#00010100#
#
# The following parameters force the inclusion of fallback code sets
# as supported conversion code sets. This is required to enable
# interoperability with ORBs whose code sets negotiation support is
# broken. See PolyORB Users Guide for additional information.
#
#giop.add_char_fallback_code_set=false
#giop.add_wchar_fallback_code_set=false
###############################################################################
# IIOP parameters
#
[iiop]
###############################################################
# IIOP Global Settings
# Preference level for IIOP
#polyorb.binding_data.iiop.preference=0
# IIOP default address
#polyorb.protocols.iiop.default_addr=127.0.0.1
#polyorb.protocols.iiop.default_addr=115.64.122.85
#polyorb.protocols.iiop.default_addr=202.7.162.88
#polyorb.protocols.iiop.default_addr=192.168.1.1
#polyorb.protocols.iiop.default_addr=110.174.207.98
# IIOP default port
polyorb.protocols.iiop.default_port=2809
# Single port number: bind only to that port, fail if already bound
#polyorb.protocols.iiop.default_port=2809-2811
# Port range: bind to first available port in range
# IIOP alternate addresses
#polyorb.protocols.iiop.alternate_listen_addresses=127.0.0.1:2810 127.0.0.1:2820
# Default GIOP/IIOP Version
#polyorb.protocols.iiop.giop.default_version.major=1
#polyorb.protocols.iiop.giop.default_version.minor=2
###############################################################
# IIOP 1.2 specific parameters
# Set to True to enable IIOP 1.2
#polyorb.protocols.iiop.giop.1.2.enable=true
# Set to True to send a locate message prior to the request
#polyorb.protocols.iiop.giop.1.2.locate_then_request=true
# Maximum message size before fragmenting request
#polyorb.protocols.iiop.giop.1.2.max_message_size=1000
###############################################################
# IIOP 1.1 specific parameters
# Set to True to enable IIOP 1.1
#polyorb.protocols.iiop.giop.1.1.enable=true
# Set to True to send a locate message prior to the request
#polyorb.protocols.iiop.giop.1.1.locate_then_request=true
# Maximum message size before fragmenting request
#polyorb.protocols.iiop.giop.1.1.max_message_size=1000
###############################################################
# IIOP 1.0 specific parameters
# Set to True to enable IIOP 1.0
#polyorb.protocols.iiop.giop.1.0.enable=true
# Set to True to send a locate message prior to the request
#polyorb.protocols.iiop.giop.1.0.locate_then_request=true
###############################################################################
# SSLIOP parameters
#
[ssliop]
###############################################################
# SSLIOP Global Settings
# SSLIOP default port
#polyorb.protocols.ssliop.default_port=2810
# Single port number: bind only to that port, fail if already bound
#polyorb.protocols.ssliop.default_port=2810-2812
# Port range: bind to first available port in range
# If no SSLIOP default address is provided, the one speficied for IIOP
# is reused.
# Private Key file name
#polyorb.protocols.ssliop.privatekeyfile=privkey.pem
# Certificate file name
#polyorb.protocols.ssliop.certificatefile=cert.pem
# Trusted CA certificates file
#polyorb.protocols.ssliop.cafile=cacert.pem
# Trusted CA certificates path
#polyorb.protocols.ssliop.capath=demoCA/certs
# Disable unprotected invocations
#polyorb.protocols.ssliop.disable_unprotected_invocations=true
###############################################################
# Peer certificate verification mode
# Verify peer certificate
#polyorb.protocols.ssliop.verify=false
# Fail if client did not return certificate. (server side option)
#polyorb.protocols.ssliop.verify_fail_if_no_peer_cert=false
# Request client certificate only once. (server side option)
#polyorb.protocols.ssliop.verify_client_once=false
###############################################################################
# DIOP parameters
#
[diop]
###############################################################
# DIOP Global Settings
# Preference level for DIOP
#polyorb.binding_data.diop.preference=0
# DIOP default address
#polyorb.protocols.diop.default_addr=127.0.0.1
# DIOP default port
#polyorb.protocols.diop.default_port=12345
# Single port number: bind only to that port, fail if already bound
#polyorb.protocols.diop.default_port=12345-12347
# Port range: bind to first available port in range
# Default GIOP/DIOP Version
#polyorb.protocols.diop.giop.default_version.major=1
#polyorb.protocols.diop.giop.default_version.minor=2
###############################################################
# DIOP 1.2 specific parameters
# Set to True to enable DIOP 1.2
#polyorb.protocols.diop.giop.1.2.enable=true
# Maximum message size
#polyorb.protocols.diop.giop.1.2.max_message_size=1000
###############################################################
# DIOP 1.1 specific parameters
# Set to True to enable DIOP 1.1
#polyorb.protocols.diop.giop.1.1.enable=true
# Maximum message size
#polyorb.protocols.diop.giop.1.1.max_message_size=1000
###############################################################
# DIOP 1.0 specific parameters
# Set to True to enable DIOP 1.0
#polyorb.protocols.diop.giop.1.0.enable=true
###############################################################################
# MIOP parameters
#
[miop]
###############################################################
# MIOP Global Settings
# Preference level for MIOP
#polyorb.binding_data.uipmc.preference=0
# Maximum message size
#polyorb.miop.max_message_size=6000
# Time To Leave parameter
#polyorb.miop.ttl=15
# Multicast address to use
# These two parameters must be set explicitly, no default value is provided.
# If either parameter is unset, the MIOP access point is disabled.
#polyorb.miop.multicast_addr=<group-ip-address>
#polyorb.miop.multicast_port=<port-number>
# Set to True to enable MIOP
#polyorb.protocols.miop.giop.1.2.enable=false
# Maximum message size
#polyorb.protocols.miop.giop.1.2.max_message_size=1000
###############################################################################
# SOAP parameters
#
[soap]
###############################################################
# SOAP Global Settings
# Preference level for SOAP
#polyorb.binding_data.soap.preference=0
# SOAP default address
#polyorb.protocols.soap.default_addr=127.0.0.1
# SOAP default port
#polyorb.protocols.soap.default_port=8080
# Single port number: bind only to that port, fail if already bound
#polyorb.protocols.soap.default_port=8080-8082
# Port range: bind to first available port in range
###############################################################################
# Enable/Disable access points
#
[access_points]
#srp=disable
#soap=disable
#iiop=disable
#iiop.ssliop=disable
#diop=disable
#uipmc=disable
###############################################################################
# Enable/Disable modules
#
[modules]
#binding_data.srp=disable
#binding_data.soap=disable
#binding_data.iiop=disable
#binding_data.iiop.ssliop=disable
#binding_data.diop=disable
#binding_data.uipmc=disable
###############################################################################
# Parameters for tasking
#
[tasking]
# Default storage size for all threads spawned by PolyORB
#storage_size=262144
# Number of threads by Thread Pool tasking policy
#min_spare_threads=4
#max_spare_threads=4
#max_threads=4
###############################################################################
# Parameters for ORB Controllers
#
[orb_controller]
# Interval between two polling actions on one monitor
#polyorb.orb_controller.polling_interval=0
# Timeout when polling on one monitor
#polyorb.orb_controller.polling_timeout=0
###############################################################################
# Parameters for transport mechanisms
#
[transport]
# Set TCP_NODELAY option on TCP sockets to disable Nagle buffering
# (this is true by default)
#tcp.nodelay=false
###############################################################################
# Enable/Disable proxies
#
[proxies]
#enable_proxies=false
###############################################################################
# Security Service configuration
[security_manager]
#own_credentials=my_credentials
#integrity_required=true
#confidentiality_required=true
#detect_replay_required=true
#detect_misordering_required=true
#establish_trust_in_target_required=true
#establish_trust_in_client_required=true
#identity_assertion_required=true
#delegation_by_client_required=true
#[my_credentials]
#transport_credentials_type=tls
#tls.method=tls1
#tls.certificate_file=my.crt
#tls.certificate_chain_file=
#tls.private_key_file=my.key
#tls.certificate_authority_file=root.crt
#tls.certificate_authority_path
#tls.ciphers=ALL
#tls.verify_peer=true
#tls.verify_fail_if_no_peer_certificate=true
#
#authentication_credentials_type=gssup
#gssup.username=username@domain
#gssup.password=password
#gssup.target_name=@domain
[tlsiop]
#addresses=127.0.0.1:3456
#[my_gssup]
#mechanism=gssup
#gssup.target_name=@domain
#gssup.passwd_file=passwd.pwd
#[MySecurePOA]
#unprotected_invocation_allowed=true
#transport_mechanism=tlsiop
#authentication_mechanism=my_gssup
#authentication_required=true
#backward_trust_rules_file=file.btr
#privilege_authorities=

View File

@@ -0,0 +1,68 @@
[dsa]
name_service=corbaloc:iiop:1.2@127.0.0.1:2809/NameService/000000024fF0000000080000000
#name_service=corbaloc:iiop:1.2@192.168.1.1:2809/NameService/000000024fF0000000080000000
#name_service=corbaloc:iiop:1.2@109.74.196.91:2810/NameService/000000024fF0000000080000000
#name_service=corbaloc:iiop:1.2@110.174.207.98:2809/NameService/000000024fF0000000080000000
[transport]
# Set TCP_NODELAY option on TCP sockets to disable Nagle buffering (this is true by default)
#tcp.nodelay=false
[iiop]
polyorb.protocols.iiop.default_port=5001
# Set to True to enable IIOP 1.2
#polyorb.protocols.iiop.giop.1.2.enable=true
# Set to True to send a locate message prior to the request
#polyorb.protocols.iiop.giop.1.2.locate_then_request=false
# Maximum message size before fragmenting request
#polyorb.protocols.iiop.giop.1.2.max_message_size=10000
# Set to True to enable IIOP 1.1
#polyorb.protocols.iiop.giop.1.1.enable=true
# Set to True to send a locate message prior to the request
#polyorb.protocols.iiop.giop.1.1.locate_then_request=false
# Maximum message size before fragmenting request
#polyorb.protocols.iiop.giop.1.1.max_message_size=10000
[diop]
# Preference level for DIOP
#polyorb.binding_data.diop.preference=1
# DIOP default address
#polyorb.protocols.diop.default_addr=127.0.0.1
# DIOP default port
#polyorb.protocols.diop.default_port=5155
[tasking]
## Default storage size for all threads spawned by PolyORB
#
storage_size=10162144

View File

@@ -0,0 +1,627 @@
###############################################################################
# PolyORB configuration file.
# $Id: polyorb.conf 170012 2011-02-02 17:00:14Z quinot $
###############################################################################
# The syntax of the configuration file is:
# - empty lines and lines that have a '#' in column 1 are
# ignored;
# - sections can be started by lines of the form
# '[' SECTION-NAME ']';
# - variable assignments can be performed by lines of the
# form VARIABLE-NAME '=' VALUE.
# Any variable assignment is local to a section.
#
# Assignments that occur before the first section declaration
# are relative to section [environment].
# Section and variable names are case sensitive.
#
# A variable Var.Iable in section [Sec] can be overridden by
# setting environment variable "POLYORB_SEC_VAR_IABLE"
# (see Make_Env_Name in body).
# Furthermore, each time a resolved in that section value
# starts with "file:", the contents of the file is used instead.
###############################################################################
# Logging facility
#
# Note: debug will work iff PolyORB has been configured with 'debug' enabled
[log]
#default=notice
#timestamp=false
#
# Middleware core
#
#polyorb.any=debug
#polyorb.any.exceptionlist=debug
#polyorb.any.nvlist=debug
#polyorb.asynch_ev.sockets=debug
#polyorb.binding_data=debug
#polyorb.binding_objects=debug
#polyorb.buffers=debug
#polyorb.buffers_show=debug
#polyorb.call_back=debug
#polyorb.components=debug
#polyorb.configuration=debug
##### polyorb.errors=debug
#polyorb.errors.helper=debug
##### polyorb.exceptions=debug
#polyorb.exceptions.stack=debug
#polyorb.filters=debug
#polyorb.filters.slicers=debug
#polyorb.filters.fragmenter=debug
#polyorb.initialization=debug
#polyorb.lanes=debug
#polyorb.orb=debug
#polyorb.orb_controller=debug
#polyorb.orb_controller_status=debug
#polyorb.orb.no_tasking=debug
#polyorb.orb.thread_per_request=debug
#polyorb.orb.thread_per_session=debug
#polyorb.orb.thread_pool=debug
#polyorb.protocols=debug
#polyorb.protocols.echo=debug
#polyorb.references=debug
#polyorb.references.binding=debug
#polyorb.references.corbaloc=debug
#polyorb.references.ior=debug
#polyorb.references.uri=debug
#polyorb.representations.cdr=debug
#polyorb.requests=debug
#polyorb.request_qos=debug
#polyorb.request_scheduler.servant_lane=debug
#polyorb.servants.group_servants=debug
#polyorb.smart_pointers=debug
##### polyorb.tasking.advanced_mutexes=debug
##### polyorb.tasking.condition_variables=debug
##### polyorb.tasking.mutexes=debug
##### polyorb.tasking.rw_locks=debug
##### polyorb.tasking.semaphores=debug
##### polyorb.tasking.watchers=debug
##### polyorb.tasking.profiles.full_tasking.threads=debug
#polyorb.transport.connected=debug
#polyorb.transport.connected.sockets=debug
#polyorb.transport.connected.sockets.ssl=debug
#polyorb.transport.datagram.sockets=debug
#polyorb.utils.configuration_file=debug
#polyorb.utils.sockets=debug
#polyorb.utils.tcp_access_points=debug
#
# POA
#
#polyorb.obj_adapters.group_object_adapter=debug
#polyorb.object_maps.system=debug
#polyorb.object_maps.user=debug
#polyorb.poa=debug
#polyorb.poa.basic_poa=debug
#polyorb.poa_manager.basic_manager=debug
#polyorb.poa_types=debug
#polyorb.poa_policies.thread_policy.single_thread=debug
#polyorb.poa_policies.thread_policy.main_thread=debug
#polyorb.rt_poa.basic_rt_poa=debug
#
# CORBA personality
#
#corba.fixed_point=debug
#corba.orb=debug
#corba.serverrequest=debug
#polyorb.corba_p.exceptions=debug
#polyorb.corba_p.initial_references=debug
#polyorb.corba_p.server_tools=debug
#polyorb.if_descriptors.corba_ir=debug
#portableserver=debug
#portableserver.poa=debug
#
# DSA personality
#
#polyorb.dsa_p.partitions=debug
#polyorb.dsa_p.remote_launch=debug
#polyorb.dsa_p.storages=debug
#polyorb.dsa_p.storages.dsm=debug
#polyorb.dsa_p.storages.dfs=debug
#system.dsa_services=debug
#system.partition_interface=debug
#
#polyorb.qos.term_manager_info=debug
#polyorb.termination_manager=debug
#polyorb.termination_manager.bootstrap=debug
#
# GIOP personality
#
#polyorb.binding_data.giop.common_sockets=debug
#polyorb.giop_p.exceptions=debug
#polyorb.giop_p.service_contexts=debug
#polyorb.giop_p.tagged_components=debug
##### polyorb.protocols.giop=debug
#polyorb.protocols.giop.common=debug
#polyorb.protocols.giop.giop_1_0=debug
#polyorb.protocols.giop.giop_1_1=debug
#polyorb.protocols.giop.giop_1_2=debug
#polyorb.representations.cdr.giop_utils=debug
#
# IIOP Personality
#
#polyorb.binding_data.giop.iiop=debug
#
# DIOP Personality
#
#polyorb.binding_data.giop.diop=debug
#
# MIOP Personality
#
#polyorb.binding_data.giop.uipmc=debug
#polyorb.filters.miop=debug
#polyorb.filters.miop.miop_in=debug
#polyorb.filters.miop.miop_out=debug
#polyorb.miop_p.tagged_components=debug
#
# MOMA personality
#
#moma.configuration.server=debug
#moma.configuration=debug
#moma.message_consumers=debug
#moma.message_producers=debug
#moma.provider.message_consumer=debug
#moma.provider.message_handler=debug
#moma.provider.message_pool=debug
#moma.provider.message_producer=debug
#moma.provider.routers=debug
#moma.provider.topic_datas=debug
#moma.types=debug
#
# SOAP personality
#
#polyorb.filters.http=debug
#polyorb.protocols.soap_pr=debug
#soap.message.xml=debug
#soap.types=debug
#
# SRP personality
#
#polyorb.protocols.srp=debug
#polyorb.representations.srp=debug
#
# Tasking profiles
#
#polyorb.tasking.profiles.full_tasking.condition_variables=debug
#polyorb.tasking.profiles.full_tasking.mutexes=debug
##### polyorb.tasking.profiles.full_tasking.threads=debug
#polyorb.tasking.profiles.ravenscar.condition_variables=debug
#polyorb.tasking.profiles.ravenscar.index_manager=debug
#polyorb.tasking.profiles.ravenscar.mutexes=debug
#polyorb.tasking.profiles.ravenscar.threads=debug
#
# Security Service
#
#polyorb.security.authentication_mechanisms=debug
#polyorb.security.credentials=debug
#polyorb.security.exported_names=debug
[smart_pointers]
# Fine-grained control of debugging traces for smart pointers events
#default.trace=false
#POLYORB.ANY.ANY_CONTAINER.trace=true
#POLYORB.ANY.NVLIST.OBJECT.trace=true
#POLYORB.BINDING_OBJECTS.BINDING_OBJECT.trace=true
#POLYORB.CORBA_P.POLICY.POLICY_OBJECT_TYPE.trace=true
#POLYORB.OBJ_ADAPTERS.GROUP_OBJECT_ADAPTER.GROUP_OBJECT_ADAPTER.trace=true
#POLYORB.POA.BASIC_POA.BASIC_OBJ_ADAPTER.trace=true
#POLYORB.POA_MANAGER.BASIC_MANAGER.BASIC_POA_MANAGER.trace=true
#POLYORB.REFERENCES.REFERENCE_INFO.trace=true
###############################################################################
# CORBA parameters
#
[corba]
#name_service=IOR:xxx
#ir_service=IOR:xxx
#policy_domain_manager=IOR:xxx
#replication_manager=IOR:xxx
###############################################################################
# DSA parameters
#
[dsa]
#rpc_timeout=0
name_service=corbaloc:iiop:1.2@127.0.0.1:2809/NameService/000000024fF0000000080000000
#name_service=corbaloc:iiop:1.2@110.174.207.98:2809/NameService/000000024fF0000000080000000
#name_service=corbaloc:iiop:1.2@192.168.1.1:2809/NameService/000000024fF0000000080000000
#delay_between_failed_requests=1000
#max_failed_requests=10
#termination_initiator=false
#termination_policy=global_termination
#tm_time_between_waves=1000
#tm_time_before_start=5000
#detach=false
#rsh_command=ssh
#rsh_options=-f
#force_rsh=false
###############################################################################
# CDR parameters
#
[cdr]
enable_fast_path=true
# Set to FALSE to disable fast path CDR (un)marshalling
###############################################################################
# GIOP parameters
#
[giop]
###############################################################
# Native code sets
#
# Available char data code sets:
# 16#00010001# ISO 8859-1:1987; Latin Alphabet No. 1
# 16#05010001# X/Open UTF-8; UCS Transformation Format 8 (UTF-8)
#
# Available wchar data code sets:
# 16#00010100# ISO/IEC 10646-1:1993; UCS-2, Level 1
# 16#00010109# ISO/IEC 10646-1:1993;
# UTF-16, UCS Transformation Format 16-bit form
#
#giop.native_char_code_set=16#00010001#
#giop.native_wchar_code_set=16#00010100#
#
# The following parameters force the inclusion of fallback code sets
# as supported conversion code sets. This is required to enable
# interoperability with ORBs whose code sets negotiation support is
# broken. See PolyORB Users Guide for additional information.
#
#giop.add_char_fallback_code_set=false
#giop.add_wchar_fallback_code_set=false
###############################################################################
# IIOP parameters
#
[iiop]
###############################################################
# IIOP Global Settings
# Preference level for IIOP
#polyorb.binding_data.iiop.preference=0
# IIOP default address
#polyorb.protocols.iiop.default_addr=127.0.0.1
# IIOP default port
polyorb.protocols.iiop.default_port=5003
# Single port number: bind only to that port, fail if already bound
#polyorb.protocols.iiop.default_port=2809-2811
# Port range: bind to first available port in range
# IIOP alternate addresses
#polyorb.protocols.iiop.alternate_listen_addresses=127.0.0.1:2810 127.0.0.1:2820
# Default GIOP/IIOP Version
#polyorb.protocols.iiop.giop.default_version.major=1
#polyorb.protocols.iiop.giop.default_version.minor=2
###############################################################
# IIOP 1.2 specific parameters
# Set to True to enable IIOP 1.2
#polyorb.protocols.iiop.giop.1.2.enable=true
# Set to True to send a locate message prior to the request
#polyorb.protocols.iiop.giop.1.2.locate_then_request=true
# Maximum message size before fragmenting request
#polyorb.protocols.iiop.giop.1.2.max_message_size=1000
###############################################################
# IIOP 1.1 specific parameters
# Set to True to enable IIOP 1.1
#polyorb.protocols.iiop.giop.1.1.enable=true
# Set to True to send a locate message prior to the request
#polyorb.protocols.iiop.giop.1.1.locate_then_request=true
# Maximum message size before fragmenting request
#polyorb.protocols.iiop.giop.1.1.max_message_size=1000
###############################################################
# IIOP 1.0 specific parameters
# Set to True to enable IIOP 1.0
#polyorb.protocols.iiop.giop.1.0.enable=true
# Set to True to send a locate message prior to the request
#polyorb.protocols.iiop.giop.1.0.locate_then_request=true
###############################################################################
# SSLIOP parameters
#
[ssliop]
###############################################################
# SSLIOP Global Settings
# SSLIOP default port
#polyorb.protocols.ssliop.default_port=2810
# Single port number: bind only to that port, fail if already bound
#polyorb.protocols.ssliop.default_port=2810-2812
# Port range: bind to first available port in range
# If no SSLIOP default address is provided, the one speficied for IIOP
# is reused.
# Private Key file name
#polyorb.protocols.ssliop.privatekeyfile=privkey.pem
# Certificate file name
#polyorb.protocols.ssliop.certificatefile=cert.pem
# Trusted CA certificates file
#polyorb.protocols.ssliop.cafile=cacert.pem
# Trusted CA certificates path
#polyorb.protocols.ssliop.capath=demoCA/certs
# Disable unprotected invocations
#polyorb.protocols.ssliop.disable_unprotected_invocations=true
###############################################################
# Peer certificate verification mode
# Verify peer certificate
#polyorb.protocols.ssliop.verify=false
# Fail if client did not return certificate. (server side option)
#polyorb.protocols.ssliop.verify_fail_if_no_peer_cert=false
# Request client certificate only once. (server side option)
#polyorb.protocols.ssliop.verify_client_once=false
###############################################################################
# DIOP parameters
#
[diop]
###############################################################
# DIOP Global Settings
# Preference level for DIOP
#polyorb.binding_data.diop.preference=0
# DIOP default address
#polyorb.protocols.diop.default_addr=127.0.0.1
# DIOP default port
#polyorb.protocols.diop.default_port=12345
# Single port number: bind only to that port, fail if already bound
#polyorb.protocols.diop.default_port=12345-12347
# Port range: bind to first available port in range
# Default GIOP/DIOP Version
#polyorb.protocols.diop.giop.default_version.major=1
#polyorb.protocols.diop.giop.default_version.minor=2
###############################################################
# DIOP 1.2 specific parameters
# Set to True to enable DIOP 1.2
#polyorb.protocols.diop.giop.1.2.enable=true
# Maximum message size
#polyorb.protocols.diop.giop.1.2.max_message_size=1000
###############################################################
# DIOP 1.1 specific parameters
# Set to True to enable DIOP 1.1
#polyorb.protocols.diop.giop.1.1.enable=true
# Maximum message size
#polyorb.protocols.diop.giop.1.1.max_message_size=1000
###############################################################
# DIOP 1.0 specific parameters
# Set to True to enable DIOP 1.0
#polyorb.protocols.diop.giop.1.0.enable=true
###############################################################################
# MIOP parameters
#
[miop]
###############################################################
# MIOP Global Settings
# Preference level for MIOP
#polyorb.binding_data.uipmc.preference=0
# Maximum message size
#polyorb.miop.max_message_size=6000
# Time To Leave parameter
#polyorb.miop.ttl=15
# Multicast address to use
# These two parameters must be set explicitly, no default value is provided.
# If either parameter is unset, the MIOP access point is disabled.
#polyorb.miop.multicast_addr=<group-ip-address>
#polyorb.miop.multicast_port=<port-number>
# Set to True to enable MIOP
#polyorb.protocols.miop.giop.1.2.enable=false
# Maximum message size
#polyorb.protocols.miop.giop.1.2.max_message_size=1000
###############################################################################
# SOAP parameters
#
[soap]
###############################################################
# SOAP Global Settings
# Preference level for SOAP
#polyorb.binding_data.soap.preference=0
# SOAP default address
#polyorb.protocols.soap.default_addr=127.0.0.1
# SOAP default port
#polyorb.protocols.soap.default_port=8080
# Single port number: bind only to that port, fail if already bound
#polyorb.protocols.soap.default_port=8080-8082
# Port range: bind to first available port in range
###############################################################################
# Enable/Disable access points
#
[access_points]
#srp=disable
#soap=disable
#iiop=disable
#iiop.ssliop=disable
#diop=disable
#uipmc=disable
###############################################################################
# Enable/Disable modules
#
[modules]
#binding_data.srp=disable
#binding_data.soap=disable
#binding_data.iiop=disable
#binding_data.iiop.ssliop=disable
#binding_data.diop=disable
#binding_data.uipmc=disable
###############################################################################
# Parameters for tasking
#
[tasking]
#storage_size=262144
# Default storage size for all threads spawned by PolyORB
#abortable_rpcs=true
# If set True, allows abortion of remote calls on the server side
# Control of Thead_Pool
#start_threads=4
# Count of initially created anonymous threads in pool
#min_spare_threads=2
# Minimum number of idle anonymous threads to maintain
#max_spare_threads=4
# Maximum number of idle anonymous threads to maintain
#max_threads=10
# Upper limit on number of anonymous threads
###############################################################################
# Parameters for ORB Controllers
#
[orb_controller]
# Interval between two polling actions on one monitor (milliseconds)
#polyorb.orb_controller.polling_interval=0
# Timeout when polling on one monitor (milliseconds)
#polyorb.orb_controller.polling_timeout=0
###############################################################################
# Parameters for transport mechanisms
#
[transport]
# Set TCP_NODELAY option on TCP sockets to disable Nagle buffering
# (this is true by default)
#tcp.nodelay=false
###############################################################################
# Enable/Disable proxies
#
[proxies]
#enable_proxies=false
###############################################################################
# Security Service configuration
[security_manager]
#own_credentials=my_credentials
#integrity_required=true
#confidentiality_required=true
#detect_replay_required=true
#detect_misordering_required=true
#establish_trust_in_target_required=true
#establish_trust_in_client_required=true
#identity_assertion_required=true
#delegation_by_client_required=true
#[my_credentials]
#transport_credentials_type=tls
#tls.method=tls1
#tls.certificate_file=my.crt
#tls.certificate_chain_file=
#tls.private_key_file=my.key
#tls.certificate_authority_file=root.crt
#tls.certificate_authority_path
#tls.ciphers=ALL
#tls.verify_peer=true
#tls.verify_fail_if_no_peer_certificate=true
#
#authentication_credentials_type=gssup
#gssup.username=username@domain
#gssup.password=password
#gssup.target_name=@domain
[tlsiop]
#addresses=127.0.0.1:3456
#[my_gssup]
#mechanism=gssup
#gssup.target_name=@domain
#gssup.passwd_file=passwd.pwd
#[MySecurePOA]
#unprotected_invocation_allowed=true
#transport_mechanism=tlsiop
#authentication_mechanism=my_gssup
#authentication_required=true
#backward_trust_rules_file=file.btr
#privilege_authorities=

View File

@@ -0,0 +1,22 @@
with
"gel",
"../gel_demo",
"lace_shared";
project GEL_fused
is
for Source_Dirs use (".");
for Object_Dir use "build";
for Exec_Dir use ".";
for Main use ("launch_gel_fused.adb");
package Ide renames Lace_shared.Ide;
package Builder renames Lace_shared.Builder;
package Compiler renames Lace_shared.Compiler;
package Binder renames Lace_shared.Binder;
package Linker is
for Default_Switches ("ada") use ("-g", "-lexpat", "-lGL", "-lGLU", "-lX11", "-lm");
end Linker;
end GEL_fused;

View File

@@ -0,0 +1,14 @@
with
gel_demo_Server,
gel_demo_Client;
procedure launch_GEL_fused
--
-- Launches the fused version.
--
is
begin
gel_demo_Server.item.start;
gel_demo_Client.item.start;
end launch_GEL_fused;

View File

@@ -0,0 +1,21 @@
with
"gel",
"lace_shared";
project gel_Demo
is
for Create_Missing_Dirs use "True";
for Object_Dir use "build";
for Source_Dirs use (".");
package Ide renames Lace_shared.Ide;
package Builder renames Lace_shared.Builder;
package Compiler renames Lace_shared.Compiler;
package Binder renames Lace_shared.Binder;
package Linker is
for Default_Switches ("ada") use ("-g");
end Linker;
end gel_Demo;

View File

@@ -0,0 +1,72 @@
with
gel_demo_Services,
gel_demo_Server,
gel.Applet.client_World,
gel.Forge,
gel.Camera,
ada.Calendar,
ada.Text_IO,
ada.Exceptions;
package body gel_demo_Client
is
use ada.Text_IO;
task body Item
is
use type ada.Calendar.Time;
the_Applet : gel.Applet.client_World.view;
next_render_Time : ada.calendar.Time;
begin
accept start;
the_Applet := gel.Forge.new_client_Applet ("distributed Demo ~ Client", 1920, 1200);
-- Register the client world as a mirror of the server world.
--
the_Applet.client_World.is_a_Mirror (of_World => gel_demo_Services.World);
gel_demo_Services.World.register (the_Mirror => the_Applet.client_World.all'Access,
Mirror_as_observer => the_Applet.client_World.all'Access);
-- Setup.
--
the_Applet.client_Camera.Site_is ([0.0, 0.0, 20.0]);
the_Applet.enable_simple_Dolly (1);
next_render_Time := ada.Calendar.clock;
-- Begin processing.
--
while the_Applet.is_open
loop
the_Applet.freshen;
next_render_Time := next_render_Time + 1.0/60.0;
delay until next_render_Time;
end loop;
-- Close.
--
gel_demo_services.World.deregister (the_mirror => the_Applet.client_World.all'access);
the_Applet.destroy;
gel_demo_Server.item.stop;
put_Line ("Client done.");
exception
when E : others =>
put_Line ("Client unhandled exception ...");
put_Line (ada.exceptions.Exception_Information (E));
put_Line ("Client has terminated !");
end Item;
end gel_demo_Client;

View File

@@ -0,0 +1,12 @@
package gel_demo_Client
--
-- Provides a client.
--
is
task Item
is
entry start;
end Item;
end gel_demo_Client;

View File

@@ -0,0 +1,109 @@
with
gel.Forge,
gel.Sprite,
Physics,
float_Math,
ada.Calendar,
ada.Text_IO,
ada.Exceptions;
package body gel_demo_Server
is
use ada.Calendar,
ada.Text_IO;
package Math renames float_Math;
task body Item
is
the_World : gel.World.server.view;
begin
accept start
do
the_World := gel.World.server.forge.new_World ("Server", 1, physics.Bullet, null);
the_server_World := the_World.all'Access;
end start;
the_World.start;
declare
-- use type math.Real;
the_Box : constant gel.Sprite.view := gel.Forge. new_box_Sprite (the_World.all'Access,
Site => math.Origin_3D,
Size => [20.0, 1.0, 20.0],
Mass => 0.0);
the_Ball : constant gel.Sprite.view := gel.Forge.new_ball_Sprite (the_World.all'Access,
Mass => 1.0);
next_render_Time : ada.calendar.Time;
Counter : Natural := 0;
Done : Boolean := False;
begin
--- Setup.
--
the_World.Gravity_is ([0.0, -10.0, 0.0]);
the_World.add (the_Ball, and_Children => False);
the_Ball .Site_is ([0.0, 10.0, 0.0]);
the_Ball.Solid.activate;
the_World.add (the_Box, and_Children => False);
the_Box.Site_is ([0.0, -1.0, 0.0]);
--- Begin processing.
--
next_render_Time := ada.Calendar.clock;
delay 1.0;
while not Done
loop
select
accept stop
do
Done := True;
end stop;
else
null;
end select;
the_World.evolve;
Counter := Counter + 1;
if Counter = 5 * 60
then
Counter := 0;
the_Ball.Site_is ([0.0, 25.0, 0.0]);
end if;
next_render_Time := next_render_Time + gel.World.evolve_Period;
delay until next_render_Time;
end loop;
--- Close
--
the_World.destroy;
end;
exception
when E : others =>
put_Line ("Server unhandled exception ...");
put_Line (ada.exceptions.Exception_Information (E));
put_Line ("Server has terminated !");
end Item;
end gel_demo_Server;

View File

@@ -0,0 +1,18 @@
with
gel.World.server;
package gel_demo_Server
--
-- Provides the server.
--
is
the_server_World : gel.World.server.view;
task Item
is
entry start;
entry stop;
end Item;
end gel_demo_Server;

View File

@@ -0,0 +1,14 @@
with
gel_demo_Server;
package body gel_demo_Services
is
function World return gel.remote.World.view
is
begin
return gel_demo_Server.the_server_World.all'access;
end World;
end gel_demo_Services;

View File

@@ -0,0 +1,14 @@
with
gel.remote.World;
package gel_demo_Services
--
-- Provides RCI services.
--
is
pragma remote_call_Interface;
function World return gel.remote.World.view;
end gel_demo_Services;

View File

@@ -0,0 +1,16 @@
name = "lace_gel_full_demo"
description = "A demo of most of GEL's features."
version = "0.1.1"
authors = ["Rod Kay"]
maintainers = ["Rod Kay <rodakay5@gmail.com>"]
maintainers-logins = ["charlie5"]
licenses = "ISC"
website = "https://github.com/charlie5/lace-alire"
executables = ["launch_full_demo"]
project-files = ["full_demo.gpr"]
[[depends-on]]
lace_gel = "~0.1"

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@@ -0,0 +1,75 @@
# Blender v2.58 (sub 0) OBJ File: '619.blend'
# www.blender.org
mtllib button.mtl
o Mesh_Cube.001
v -0.5 0.5 1.093806
v -0.5 0.5 1.093806
v -0.5 0.5 1.206992
v -0.5 0.5 1.093806
v -0.5 0.5 1.093806
v 0.5 -0.5 1.093806
v -0.5 -0.5 1.093806
v 0.5 0.5 1.093807
v 0.5 0.5 1.206992
v -0.5 -0.5 1.093806
v -0.5 -0.5 1.206992
v 0.5 -0.5 1.093806
v 0.5 -0.5 1.093806
v 0.5 -0.5 1.093806
v 0.5 -0.5 1.206992
vt 0.000000 0.000000
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.000000 1.000000
vt 0.060926 0.000000
vt 0.899428 -0.000000
vt 0.986771 0.868468
vt 0.036946 0.036946
vt 1.000000 0.100572
vt 1.000000 0.939074
vt 0.934764 0.934764
vt 0.000000 0.036946
vt 0.565930 0.036946
vt 0.565928 0.934763
vt 0.000000 0.934763
vt 0.986772 0.868468
vt 1.000000 0.094340
vt 1.000000 0.880876
vt 0.119123 -0.000001
vt 0.905660 0.000000
vt 0.999999 0.100572
vt 1.000000 0.939077
vt 1.000000 0.036946
vt 1.000000 0.934764
vt 0.939074 1.000000
vt 0.100572 1.000000
vt 0.434073 0.934763
vt 0.434071 0.036946
vt 0.036946 -0.000000
vt 0.934763 -0.000000
vt 0.934763 1.000000
vt 0.036946 1.000000
vn -0.000000 1.000000 0.000001
vn 0.000000 -0.000000 -1.000000
vn -0.707107 -0.000000 0.707107
vn 0.000001 0.000000 -1.000000
vn 0.707105 0.000000 0.707109
vn 0.000000 -0.000000 1.000000
vn 0.000000 -1.000000 -0.000001
usemtl Material.001
s off
f 1/1/1 2/2/1 3/3/1
f 4/1/1 3/3/1 5/4/1
f 4/1/1 1/2/1 3/3/1
f 7/5/2 1/6/2 6/7/2
f 8/1/1 5/2/1 3/3/1 9/4/1
f 2/8/2 1/9/2 7/10/2 10/11/2
f 3/12/3 2/13/3 10/14/3 11/15/3
f 6/16/2 1/6/2 4/17/2 12/18/2
f 12/19/2 4/20/2 5/21/2 13/22/2
f 8/23/4 14/24/4 13/25/4 5/26/4
f 14/27/5 8/28/5 9/23/5 15/24/5
f 3/29/6 11/30/6 15/31/6 9/32/6
f 6/1/7 12/2/7 15/3/7 11/4/7
f 7/1/7 6/2/7 11/3/7 10/4/7
f 13/1/7 14/2/7 15/3/7 12/4/7

View File

@@ -0,0 +1,473 @@
A brief overview of bone joints follows:
<node layer="L1" sid="MasterFloor" type="JOINT" id="MasterFloor" name="MasterFloor">
<translate sid="translate"> -0.0000 0.0432 -7.4806 </translate>
<node sid="Root" type="JOINT" id="Root" name="Root">
<translate sid="translate"> 0.0000 -0.1259 8.5236 </translate>
<node sid="Hips" type="JOINT" id="Hips" name="Hips">
<translate sid="translate"> 0.0000 -0.0230 0.8049 </translate>
<node sid="UpLeg_L" type="JOINT" id="UpLeg_L" name="UpLeg_L">
<translate sid="translate"> 0.9739 -0.0255 -1.1278 </translate>
<node sid="LoLeg_L" type="JOINT" id="LoLeg_L" name="LoLeg_L">
<translate sid="translate"> -0.1523 -0.0696 -4.1615 </translate>
<node sid="Foot_L" type="JOINT" id="Foot_L" name="Foot_L">
<translate sid="translate"> -0.1247 0.2440 -4.0392 </translate>
<node sid="Toe_L" type="JOINT" id="Toe_L" name="Toe_L">
<translate sid="translate"> 0.0230 -1.1556 -0.6581 </translate>
</node>
</node>
</node>
</node>
<node sid="UpLeg_R" type="JOINT" id="UpLeg_R" name="UpLeg_R">
<translate sid="translate"> -0.9739 -0.0255 -1.1278 </translate>
<node sid="LoLeg_R" type="JOINT" id="LoLeg_R" name="LoLeg_R">
<translate sid="translate"> 0.1523 -0.0696 -4.1615 </translate>
<node sid="Foot_R" type="JOINT" id="Foot_R" name="Foot_R">
<translate sid="translate"> 0.1247 0.2440 -4.0392 </translate>
<node sid="Toe_R" type="JOINT" id="Toe_R" name="Toe_R">
<translate sid="translate"> -0.0230 -1.1556 -0.6581 </translate>
</node>
</node>
</node>
</node>
</node>
<node sid="Spine1" type="JOINT" id="Spine1" name="Spine1">
<translate sid="translate"> 0.0000 -0.0230 0.8049 </translate>
<node sid="Spine2" type="JOINT" id="Spine2" name="Spine2">
<translate sid="translate"> 0.0000 0.3031 1.0547 </translate>
<node sid="Spine3" type="JOINT" id="Spine3" name="Spine3">
<translate sid="translate"> 0.0000 0.6051 1.1926 </translate>
<node sid="Neck" type="JOINT" id="Neck" name="Neck">
<translate sid="translate"> 0.0000 -0.2067 1.8849 </translate>
<node sid="Head" type="JOINT" id="Head" name="Head">
<translate sid="translate"> 0.0000 -0.1187 1.1006 </translate>
<node sid="Jaw" type="JOINT" id="Jaw" name="Jaw">
<translate sid="translate"> 0.0000 -0.4814 0.0431 </translate>
<node sid="TongueBase" type="JOINT" id="TongueBase" name="TongueBase">
<translate sid="translate"> 0.0000 -0.0423 -0.3259 </translate>
<node sid="TongueMid" type="JOINT" id="TongueMid" name="TongueMid">
<translate sid="translate"> 0.0000 -0.2762 0.0587 </translate>
<node sid="TongueTip" type="JOINT" id="TongueTip" name="TongueTip">
<translate sid="translate"> 0.0000 -0.2279 -0.0161 </translate>
</node>
</node>
</node>
</node>
<node sid="Eye_R" type="JOINT" id="Eye_R" name="Eye_R">
<translate sid="translate"> -0.2990 -1.0292 0.4165 </translate>
</node>
<node sid="Eye_L" type="JOINT" id="Eye_L" name="Eye_L">
<translate sid="translate"> 0.2990 -1.0292 0.4165 </translate>
</node>
<node sid="UpLid_R" type="JOINT" id="UpLid_R" name="UpLid_R">
<translate sid="translate"> -0.2990 -1.0292 0.4165 </translate>
</node>
<node sid="LoLid_R" type="JOINT" id="LoLid_R" name="LoLid_R">
<translate sid="translate"> -0.2990 -1.0292 0.4165 </translate>
</node>
<node sid="UpLid_L" type="JOINT" id="UpLid_L" name="UpLid_L">
<translate sid="translate"> 0.2990 -1.0292 0.4165 </translate>
</node>
<node sid="LoLid_L" type="JOINT" id="LoLid_L" name="LoLid_L">
<translate sid="translate"> 0.2990 -1.0292 0.4165 </translate>
</node>
</node>
</node>
<node sid="Clavicle_L" type="JOINT" id="Clavicle_L" name="Clavicle_L">
<translate sid="translate"> 0.2947 -1.0762 1.1652 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="UpArm_L" type="JOINT" id="UpArm_L" name="UpArm_L">
<translate sid="translate"> 1.3995 0.7593 0.0424 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="LoArm_L" type="JOINT" id="LoArm_L" name="LoArm_L">
<translate sid="translate"> 2.3958 -0.0513 -0.1305 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Hand_L" type="JOINT" id="Hand_L" name="Hand_L">
<translate sid="translate"> 2.3059 -0.1267 0.1417 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Wrist-1_L" type="JOINT" id="Wrist-1_L" name="Wrist-1_L">
<translate sid="translate"> 0.0000 -0.0000 0.0000 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Palm-2_L" type="JOINT" id="Palm-2_L" name="Palm-2_L">
<translate sid="translate"> 0.2824 -0.1006 -0.1787 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-2-1_L" type="JOINT" id="Finger-2-1_L" name="Finger-2-1_L">
<translate sid="translate"> 0.4847 -0.2007 0.2459 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-2-2_L" type="JOINT" id="Finger-2-2_L" name="Finger-2-2_L">
<translate sid="translate"> 0.3571 -0.0416 -0.0491 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-2-3_L" type="JOINT" id="Finger-2-3_L" name="Finger-2-3_L">
<translate sid="translate"> 0.2663 -0.0291 -0.0153 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
</node>
</node>
</node>
</node>
<node sid="Palm-3_L" type="JOINT" id="Palm-3_L" name="Palm-3_L">
<translate sid="translate"> 0.2824 -0.1006 -0.1787 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-3-1_L" type="JOINT" id="Finger-3-1_L" name="Finger-3-1_L">
<translate sid="translate"> 0.5167 0.0092 0.2613 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-3-2_L" type="JOINT" id="Finger-3-2_L" name="Finger-3-2_L">
<translate sid="translate"> 0.3783 -0.0072 0.0061 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-3-3_L" type="JOINT" id="Finger-3-3_L" name="Finger-3-3_L">
<translate sid="translate"> 0.3510 -0.0128 -0.0527 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
</node>
</node>
</node>
</node>
</node>
<node sid="Wrist-2_L" type="JOINT" id="Wrist-2_L" name="Wrist-2_L">
<translate sid="translate"> 0.0000 -0.0000 0.0000 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Palm-4_L" type="JOINT" id="Palm-4_L" name="Palm-4_L">
<translate sid="translate"> 0.2877 0.1215 -0.1543 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-4-1_L" type="JOINT" id="Finger-4-1_L" name="Finger-4-1_L">
<translate sid="translate"> 0.5191 0.0274 0.1788 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-4-2_L" type="JOINT" id="Finger-4-2_L" name="Finger-4-2_L">
<translate sid="translate"> 0.3004 0.0122 -0.0036 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-4-3_L" type="JOINT" id="Finger-4-3_L" name="Finger-4-3_L">
<translate sid="translate"> 0.3113 -0.0155 -0.0167 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
</node>
</node>
</node>
</node>
<node sid="Palm-5_L" type="JOINT" id="Palm-5_L" name="Palm-5_L">
<translate sid="translate"> 0.2877 0.1215 -0.1543 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-5-1_L" type="JOINT" id="Finger-5-1_L" name="Finger-5-1_L">
<translate sid="translate"> 0.4320 0.2031 0.1388 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-5-2_L" type="JOINT" id="Finger-5-2_L" name="Finger-5-2_L">
<translate sid="translate"> 0.3115 0.0540 -0.0610 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-5-3_L" type="JOINT" id="Finger-5-3_L" name="Finger-5-3_L">
<translate sid="translate"> 0.1858 0.0091 -0.0185 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
</node>
</node>
</node>
</node>
</node>
<node sid="Palm-1_L" type="JOINT" id="Palm-1_L" name="Palm-1_L">
<translate sid="translate"> 0.0000 -0.0000 0.0000 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-1-1_L" type="JOINT" id="Finger-1-1_L" name="Finger-1-1_L">
<translate sid="translate"> 0.1964 -0.2741 -0.1517 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-1-2_L" type="JOINT" id="Finger-1-2_L" name="Finger-1-2_L">
<translate sid="translate"> 0.4060 -0.2236 -0.1020 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-1-3_L" type="JOINT" id="Finger-1-3_L" name="Finger-1-3_L">
<translate sid="translate"> 0.2557 -0.0491 -0.0086 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node sid="Clavicle_R" type="JOINT" id="Clavicle_R" name="Clavicle_R">
<translate sid="translate"> -0.2947 -1.0762 1.1652 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="UpArm_R" type="JOINT" id="UpArm_R" name="UpArm_R">
<translate sid="translate"> -1.3995 0.7593 0.0424 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="LoArm_R" type="JOINT" id="LoArm_R" name="LoArm_R">
<translate sid="translate"> -2.3958 -0.0513 -0.1305 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Hand_R" type="JOINT" id="Hand_R" name="Hand_R">
<translate sid="translate"> -2.3059 -0.1267 0.1417 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Wrist-1_R" type="JOINT" id="Wrist-1_R" name="Wrist-1_R">
<translate sid="translate"> 0.0000 -0.0000 0.0000 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Palm-2_R" type="JOINT" id="Palm-2_R" name="Palm-2_R">
<translate sid="translate"> -0.2824 -0.1006 -0.1787 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-2-1_R" type="JOINT" id="Finger-2-1_R" name="Finger-2-1_R">
<translate sid="translate"> -0.4847 -0.2007 0.2459 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-2-2_R" type="JOINT" id="Finger-2-2_R" name="Finger-2-2_R">
<translate sid="translate"> -0.3571 -0.0416 -0.0491 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-2-3_R" type="JOINT" id="Finger-2-3_R" name="Finger-2-3_R">
<translate sid="translate"> -0.2663 -0.0291 -0.0153 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
</node>
</node>
</node>
</node>
<node sid="Palm-3_R" type="JOINT" id="Palm-3_R" name="Palm-3_R">
<translate sid="translate"> -0.2824 -0.1006 -0.1787 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-3-1_R" type="JOINT" id="Finger-3-1_R" name="Finger-3-1_R">
<translate sid="translate"> -0.5167 0.0092 0.2613 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-3-2_R" type="JOINT" id="Finger-3-2_R" name="Finger-3-2_R">
<translate sid="translate"> -0.3783 -0.0072 0.0061 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-3-3_R" type="JOINT" id="Finger-3-3_R" name="Finger-3-3_R">
<translate sid="translate"> -0.3510 -0.0128 -0.0527 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
</node>
</node>
</node>
</node>
</node>
<node sid="Wrist-2_R" type="JOINT" id="Wrist-2_R" name="Wrist-2_R">
<translate sid="translate"> 0.0000 -0.0000 0.0000 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Palm-4_R" type="JOINT" id="Palm-4_R" name="Palm-4_R">
<translate sid="translate"> -0.2877 0.1215 -0.1543 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-4-1_R" type="JOINT" id="Finger-4-1_R" name="Finger-4-1_R">
<translate sid="translate"> -0.5191 0.0274 0.1788 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-4-2_R" type="JOINT" id="Finger-4-2_R" name="Finger-4-2_R">
<translate sid="translate"> -0.3004 0.0122 -0.0036 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-4-3_R" type="JOINT" id="Finger-4-3_R" name="Finger-4-3_R">
<translate sid="translate"> -0.3113 -0.0155 -0.0167 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
</node>
</node>
</node>
</node>
<node sid="Palm-5_R" type="JOINT" id="Palm-5_R" name="Palm-5_R">
<translate sid="translate"> -0.2877 0.1215 -0.1543 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-5-1_R" type="JOINT" id="Finger-5-1_R" name="Finger-5-1_R">
<translate sid="translate"> -0.4320 0.2031 0.1388 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-5-2_R" type="JOINT" id="Finger-5-2_R" name="Finger-5-2_R">
<translate sid="translate"> -0.3115 0.0540 -0.0610 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-5-3_R" type="JOINT" id="Finger-5-3_R" name="Finger-5-3_R">
<translate sid="translate"> -0.1858 0.0091 -0.0185 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
</node>
</node>
</node>
</node>
</node>
<node sid="Palm-1_R" type="JOINT" id="Palm-1_R" name="Palm-1_R">
<translate sid="translate"> 0.0000 -0.0000 0.0000 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-1-1_R" type="JOINT" id="Finger-1-1_R" name="Finger-1-1_R">
<translate sid="translate"> -0.1964 -0.2741 -0.1517 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-1-2_R" type="JOINT" id="Finger-1-2_R" name="Finger-1-2_R">
<translate sid="translate"> -0.4060 -0.2236 -0.1020 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
<node sid="Finger-1-3_R" type="JOINT" id="Finger-1-3_R" name="Finger-1-3_R">
<translate sid="translate"> -0.2557 -0.0491 -0.0086 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
</node>
<node sid="Wrist_L" type="JOINT" id="Wrist_L" name="Wrist_L">
<translate sid="translate"> 6.3959 0.2643 12.7945 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
</node>
<node sid="Wrist_R" type="JOINT" id="Wrist_R" name="Wrist_R">
<translate sid="translate"> -6.3959 0.2643 12.7945 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
</node>
<node sid="Ankle_L" type="JOINT" id="Ankle_L" name="Ankle_L">
<translate sid="translate"> 0.6970 -0.0000 0.0000 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
</node>
<node sid="Ankle_R" type="JOINT" id="Ankle_R" name="Ankle_R">
<translate sid="translate"> -0.6970 0.0000 0.0000 </translate>
<rotate sid="rotateZ">0 0 1 0.0</rotate>
<rotate sid="rotateY">0 1 0 0.0</rotate>
<rotate sid="rotateX">1 0 0 0.0</rotate>
<scale sid="scale">1.0 1.0 1.0</scale>
</node>
</node>

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -0,0 +1,148 @@
<?xml version="1.0" encoding="utf-8"?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
<asset>
<contributor>
<author>Blender User</author>
<authoring_tool>Blender 2.55.0 r-UNKNOWN-</authoring_tool>
</contributor>
<created>2010-11-28T13:09:56</created>
<modified>2010-11-28T13:09:56</modified>
<unit name="meter" meter="1"/>
<up_axis>Z_UP</up_axis>
</asset>
<library_cameras>
<camera id="Camera-camera" name="Camera">
<optics>
<technique_common>
<perspective>
<xfov>49.13434</xfov>
<aspect_ratio>1.777778</aspect_ratio>
<znear>0.099999964237</znear>
<zfar>100</zfar>
</perspective>
</technique_common>
</optics>
</camera>
</library_cameras>
<library_lights>
<light id="Lamp-light" name="Lamp">
<technique_common>
<point>
<color>1 1 1</color>
<constant_attenuation>1</constant_attenuation>
<linear_attenuation>0</linear_attenuation>
<quadratic_attenuation>5.55556e-4</quadratic_attenuation>
</point>
</technique_common>
</light>
</library_lights>
<library_images/>
<library_effects>
<effect id="Material-effect">
<profile_COMMON>
<technique sid="common">
<lambert>
<emission>
<color>0 0 0 1</color>
</emission>
<ambient>
<color>0 0 0 1</color>
</ambient>
<diffuse>
<color>0.6400000453 0.6400000453 0.6400000453 1</color>
</diffuse>
<index_of_refraction>
<float>1</float>
</index_of_refraction>
</lambert>
<extra/>
</technique>
<extra>
<technique profile="GOOGLEEARTH">
<show_double_sided>1</show_double_sided>
</technique>
</extra>
</profile_COMMON>
<extra><technique profile="MAX3D"><double_sided>1</double_sided></technique></extra>
</effect>
</library_effects>
<library_materials>
<material id="Material" name="Material">
<instance_effect url="#Material-effect"/>
</material>
</library_materials>
<library_geometries>
<geometry id="Cube-mesh">
<mesh>
<source id="Cube-mesh-positions">
<float_array id="Cube-mesh-positions-array" count="24">1 0.999999940395 -1 1 -1 -1 -1 -0.999999821186 -1 -0.999999642372 1 -1 1 0.999999463558 1 0.999999344348 -1.000001 1 -1 -0.999999642372 1 -0.999999940395 1 1</float_array>
<technique_common>
<accessor source="#Cube-mesh-positions-array" count="8" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="Cube-mesh-normals">
<float_array id="Cube-mesh-normals-array" count="18">0 0 -1 0 0 1 1 -2.83122e-7 0 -2.83122e-7 -1 0 -1 2.23517e-7 -1.3411e-7 2.38419e-7 1 2.08616e-7</float_array>
<technique_common>
<accessor source="#Cube-mesh-normals-array" count="6" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<vertices id="Cube-mesh-vertices">
<input semantic="POSITION" source="#Cube-mesh-positions"/>
</vertices>
<polylist material="Material" count="6">
<input semantic="VERTEX" source="#Cube-mesh-vertices" offset="0"/>
<input semantic="NORMAL" source="#Cube-mesh-normals" offset="1"/>
<vcount>4 4 4 4 4 4 </vcount>
<p>0 0 1 0 2 0 3 0 4 1 7 1 6 1 5 1 0 2 4 2 5 2 1 2 1 3 5 3 6 3 2 3 2 4 6 4 7 4 3 4 4 5 0 5 3 5 7 5</p>
</polylist>
</mesh>
</geometry>
</library_geometries>
<library_animations/>
<library_controllers/>
<library_visual_scenes>
<visual_scene id="Scene" name="Scene">
<node id="Cube" type="NODE">
<translate sid="location">0 0 0</translate>
<rotate sid="rotationZ">0 0 1 0</rotate>
<rotate sid="rotationY">0 1 0 0</rotate>
<rotate sid="rotationX">1 0 0 0</rotate>
<scale sid="scale">1 1 1</scale>
<instance_geometry url="#Cube-mesh">
<bind_material>
<technique_common>
<instance_material symbol="Material" target="#Material"/>
</technique_common>
</bind_material>
</instance_geometry>
</node>
<node id="Lamp" type="NODE">
<translate sid="location">4.076245 1.005454 5.903862</translate>
<rotate sid="rotationZ">0 0 1 106.9363</rotate>
<rotate sid="rotationY">0 1 0 3.163707</rotate>
<rotate sid="rotationX">1 0 0 37.26105</rotate>
<scale sid="scale">1 1 1</scale>
<instance_light url="#Lamp-light"/>
</node>
<node id="Camera" type="NODE">
<translate sid="location">7.481132 -6.50764 5.343665</translate>
<rotate sid="rotationZ">0 0 1 46.69194</rotate>
<rotate sid="rotationY">0 1 0 0.619767916163</rotate>
<rotate sid="rotationX">1 0 0 63.55929</rotate>
<scale sid="scale">1 1 1</scale>
<instance_camera url="#Camera-camera"/>
</node>
</visual_scene>
</library_visual_scenes>
<scene>
<instance_visual_scene url="#Scene"/>
</scene>
</COLLADA>

View File

@@ -0,0 +1,774 @@
# Blender v2.63 (sub 0) OBJ File: 'unit_capsule.blend'
# www.blender.org
o Mball_Meta
v -1.800000 0.800320 0.200000
v -1.969880 0.600000 0.200000
v -1.969880 0.600000 -0.200000
v -1.800000 0.800320 -0.200000
v -1.800000 0.600000 -0.557515
v -1.800000 0.557515 -0.600000
v -2.121196 0.200000 -0.200000
v -1.969881 0.200000 -0.600000
v -2.121196 -0.200000 -0.200000
v -1.969881 -0.200000 -0.600000
v -1.800000 -0.557515 -0.600000
v -1.969880 -0.600000 -0.200000
v -1.800000 -0.600000 -0.557515
v -1.800000 -0.800320 -0.200000
v -1.800000 -0.800320 0.200000
v -1.969880 -0.600000 0.200000
v -1.800000 -0.600000 0.557515
v -1.800000 -0.557515 0.600000
v -2.121196 -0.200000 0.200000
v -1.969881 -0.200000 0.600000
v -2.121196 0.200000 0.200000
v -1.969881 0.200000 0.600000
v -1.800000 -0.200000 0.800320
v -1.800000 0.200000 0.800320
v -1.800000 0.557515 0.600000
v -1.773261 0.600000 0.600000
v -1.400000 0.600000 0.895570
v -1.400000 0.364323 1.000000
v -1.516304 0.200000 1.000000
v -1.400000 0.895570 0.600000
v -1.516304 1.000000 0.200000
v -1.400000 1.000000 0.364323
v -1.800000 0.600000 0.557515
v -1.400000 1.070014 0.200000
v -1.516304 1.000000 -0.200000
v -1.400000 1.070014 -0.200000
v -1.400000 1.000000 -0.364323
v -1.000000 1.000000 -0.557515
v -1.000000 1.150200 -0.200000
v -1.400000 0.895570 -0.600000
v -1.000000 0.981045 -0.600000
v -1.400000 0.600000 -0.895570
v -1.000000 0.600000 -0.981045
v -1.400000 0.364323 -1.000000
v -1.000000 0.557515 -1.000000
v -1.400000 0.200000 -1.070014
v -1.000000 0.200000 -1.150200
v -1.400000 -0.200000 -1.070014
v -1.000000 -0.200000 -1.150200
v -1.400000 -0.364323 -1.000000
v -1.000000 -0.557515 -1.000000
v -1.400000 -0.600000 -0.895570
v -1.000000 -0.600000 -0.981045
v -1.400000 -0.895570 -0.600000
v -1.000000 -0.981045 -0.600000
v -1.400000 -1.000000 -0.364323
v -1.000000 -1.000000 -0.557515
v -1.400000 -1.070014 -0.200000
v -1.000000 -1.150200 -0.200000
v -1.400000 -1.070014 0.200000
v -1.000000 -1.150200 0.200000
v -1.400000 -1.000000 0.364323
v -1.000000 -1.000000 0.557515
v -1.400000 -0.895570 0.600000
v -1.000000 -0.981045 0.600000
v -1.400000 -0.600000 0.895570
v -1.000000 -0.600000 0.981045
v -1.400000 -0.364323 1.000000
v -1.000000 -0.557515 1.000000
v -1.400000 -0.200000 1.070014
v -1.000000 -0.200000 1.150200
v -1.400000 0.200000 1.070014
v -1.000000 0.200000 1.150200
v -1.000000 0.557515 1.000000
v -0.600000 0.557515 1.000000
v -0.600000 0.200000 1.150200
v -1.000000 0.600000 0.981045
v -0.600000 0.600000 0.981045
v -1.000000 0.981045 0.600000
v -0.600000 0.981045 0.600000
v -1.000000 1.000000 0.557515
v -0.600000 1.000000 0.557515
v -1.000000 1.150200 0.200000
v -0.600000 1.150200 0.200000
v -0.600000 1.150200 -0.200000
v -0.200000 0.981045 0.600000
v -0.200000 0.600000 0.981045
v 0.200000 0.981045 0.600000
v 0.200000 0.600000 0.981045
v -0.200000 0.557515 1.000000
v 0.200000 0.557515 1.000000
v 0.200000 0.200000 1.150200
v -0.200000 0.200000 1.150200
v -0.200000 -0.200000 1.150200
v 0.200000 -0.200000 1.150200
v -0.200000 -0.557515 1.000000
v 0.200000 -0.557515 1.000000
v 0.200000 -0.600000 0.981045
v -0.200000 -0.600000 0.981045
v -0.200000 -0.981045 0.600000
v 0.200000 -0.981045 0.600000
v 0.200000 -1.000000 0.557515
v -0.200000 -1.000000 0.557515
v 0.600000 -0.981045 0.600000
v 0.600000 -1.000000 0.557515
v 0.200000 -1.150200 0.200000
v 0.600000 -1.150200 0.200000
v 0.600000 -1.150200 -0.200000
v 0.200000 -1.150200 -0.200000
v 0.600000 -1.000000 -0.557515
v 0.200000 -1.000000 -0.557515
v 0.200000 -0.981045 -0.600000
v 0.600000 -0.981045 -0.600000
v 0.600000 -0.600000 -0.981045
v 0.200000 -0.600000 -0.981045
v 0.200000 -0.557515 -1.000000
v 0.600000 -0.557515 -1.000000
v 0.600000 -0.200000 -1.150200
v 0.200000 -0.200000 -1.150200
v 0.600000 0.200000 -1.150200
v 0.200000 0.200000 -1.150200
v 0.200000 0.557515 -1.000000
v 0.600000 0.557515 -1.000000
v 0.600000 0.600000 -0.981045
v 0.200000 0.600000 -0.981045
v 0.200000 0.981045 -0.600000
v 0.600000 0.981045 -0.600000
v 0.600000 1.000000 -0.557515
v 0.200000 1.000000 -0.557515
v 0.200000 1.150200 -0.200000
v 0.600000 1.150200 -0.200000
v 0.200000 1.150200 0.200000
v 0.600000 1.150200 0.200000
v 0.600000 1.000000 0.557515
v 0.200000 1.000000 0.557515
v 0.600000 0.981045 0.600000
v 1.000000 1.000000 0.557515
v 1.000000 0.981045 0.600000
v 1.000000 0.600000 0.981045
v 0.600000 0.600000 0.981045
v 0.600000 0.557515 1.000000
v 1.000000 0.557515 1.000000
v 1.000000 0.200000 1.150200
v 0.600000 0.200000 1.150200
v 0.600000 -0.200000 1.150200
v 1.000000 -0.200000 1.150200
v 0.600000 -0.557515 1.000000
v 1.000000 -0.557515 1.000000
v 1.000000 -0.600000 0.981045
v 0.600000 -0.600000 0.981045
v 1.000000 -0.981045 0.600000
v 1.400000 -0.600000 0.895570
v 1.400000 -0.895570 0.600000
v 1.400000 -1.000000 0.364323
v 1.000000 -1.000000 0.557515
v 1.773261 -0.600000 0.600000
v 1.800000 -0.600000 0.557515
v 1.800000 -0.800320 0.200000
v 1.516304 -1.000000 0.200000
v 1.800000 -0.557515 0.600000
v 1.400000 -0.364323 1.000000
v 1.516304 -0.200000 1.000000
v 1.800000 -0.200000 0.800320
v 1.516304 0.200000 1.000000
v 1.800000 0.200000 0.800320
v 1.400000 0.364323 1.000000
v 1.400000 0.600000 0.895570
v 1.773261 0.600000 0.600000
v 1.800000 0.557515 0.600000
v 1.400000 0.895570 0.600000
v 1.400000 0.200000 1.070014
v 1.969881 0.200000 0.600000
v 1.800000 0.600000 0.557515
v 1.969880 0.600000 0.200000
v 2.121196 0.200000 0.200000
v 1.800000 0.800320 0.200000
v 1.800000 0.800320 -0.200000
v 1.969880 0.600000 -0.200000
v 1.800000 0.600000 -0.557515
v 1.800000 0.557515 -0.600000
v 1.969881 0.200000 -0.600000
v 2.121196 0.200000 -0.200000
v 2.121196 -0.200000 -0.200000
v 1.969881 -0.200000 -0.600000
v 1.800000 -0.557515 -0.600000
v 1.800000 -0.600000 -0.557515
v 1.969880 -0.600000 -0.200000
v 1.800000 -0.800320 -0.200000
v 1.969880 -0.600000 0.200000
v 1.400000 -0.895570 -0.600000
v 1.400000 -1.000000 -0.364323
v 1.516304 -1.000000 -0.200000
v 1.773261 -0.600000 -0.600000
v 1.400000 -1.070014 -0.200000
v 1.000000 -1.150200 -0.200000
v 1.000000 -1.000000 -0.557515
v 1.400000 -0.600000 -0.895570
v 1.400000 -0.364323 -1.000000
v 1.800000 -0.200000 -0.800320
v 1.516304 -0.200000 -1.000000
v 1.800000 0.200000 -0.800320
v 1.516304 0.200000 -1.000000
v 1.400000 0.364323 -1.000000
v 1.773261 0.600000 -0.600000
v 1.400000 0.600000 -0.895570
v 1.400000 0.895570 -0.600000
v 1.400000 0.200000 -1.070014
v 1.400000 -0.200000 -1.070014
v 1.000000 -0.981045 -0.600000
v 1.000000 -0.600000 -0.981045
v 1.516304 1.000000 -0.200000
v 1.400000 1.000000 -0.364323
v 1.400000 1.070014 -0.200000
v 1.400000 1.070014 0.200000
v 1.516304 1.000000 0.200000
v 1.400000 1.000000 0.364323
v 1.000000 1.150200 0.200000
v 1.000000 1.150200 -0.200000
v 1.000000 1.000000 -0.557515
v 1.000000 0.981045 -0.600000
v 1.400000 -0.200000 1.070014
v 1.969881 -0.200000 0.600000
v -0.200000 1.150200 -0.200000
v -0.200000 1.000000 -0.557515
v -0.600000 1.000000 -0.557515
v -0.600000 0.981045 -0.600000
v -0.200000 0.981045 -0.600000
v -0.200000 -0.981045 -0.600000
v -0.200000 -0.600000 -0.981045
v -0.600000 -0.981045 -0.600000
v -0.600000 -0.600000 -0.981045
v -0.600000 -1.000000 -0.557515
v -0.200000 -1.000000 -0.557515
v -0.600000 -1.150200 -0.200000
v -0.200000 -1.150200 -0.200000
v 1.000000 -1.150200 0.200000
v -0.600000 -0.981045 0.600000
v -0.600000 -1.000000 0.557515
v -0.600000 -0.600000 0.981045
v -0.600000 -0.557515 1.000000
v -0.600000 -0.200000 1.150200
v -1.516304 -0.200000 1.000000
v -1.773261 -0.600000 0.600000
v -0.600000 -1.150200 0.200000
v -1.516304 -1.000000 0.200000
v -1.516304 -1.000000 -0.200000
v -1.773261 -0.600000 -0.600000
v -0.600000 -0.557515 -1.000000
v -0.600000 -0.200000 -1.150200
v -0.600000 0.200000 -1.150200
v -0.600000 0.557515 -1.000000
v -0.600000 0.600000 -0.981045
v -1.773261 0.600000 -0.600000
v -1.516304 0.200000 -1.000000
v -1.516304 -0.200000 -1.000000
v -1.800000 -0.200000 -0.800320
v -1.800000 0.200000 -0.800320
v -0.200000 -1.150200 0.200000
v -0.200000 1.150200 0.200000
v -0.200000 1.000000 0.557515
v -0.200000 -0.200000 -1.150200
v -0.200000 0.200000 -1.150200
v -0.200000 -0.557515 -1.000000
v -0.200000 0.557515 -1.000000
v -0.200000 0.600000 -0.981045
v 1.400000 -1.070014 0.200000
v 2.121196 -0.200000 0.200000
v 1.000000 -0.200000 -1.150200
v 1.000000 0.200000 -1.150200
v 1.000000 -0.557515 -1.000000
v 1.000000 0.557515 -1.000000
v 1.000000 0.600000 -0.981045
vn -0.659597 0.728843 0.183477
vn -0.659597 0.728843 -0.183477
vn -0.850337 0.491104 -0.188971
vn -0.847621 0.499496 0.178869
vn -0.732719 0.541581 -0.412000
vn -0.966216 0.182501 -0.181890
vn -0.729942 0.381756 -0.566942
vn -0.850795 0.191351 -0.489364
vn -0.848079 -0.178320 -0.498917
vn -0.966369 -0.181768 -0.181768
vn -0.847621 -0.499496 -0.178869
vn -0.726707 -0.388348 -0.566637
vn -0.719321 -0.561998 -0.408246
vn -0.659597 -0.728843 -0.183477
vn -0.850337 -0.491104 0.188971
vn -0.659597 -0.728843 0.183477
vn -0.732719 -0.541581 0.412000
vn -0.966216 -0.182501 0.181890
vn -0.729942 -0.381756 0.566942
vn -0.850795 -0.191351 0.489364
vn -0.848079 0.178320 0.498917
vn -0.966369 0.181768 0.181768
vn -0.655629 0.191717 0.730308
vn -0.655629 -0.191717 0.730308
vn -0.726707 0.388348 0.566637
vn -0.369396 0.385632 0.845454
vn -0.362957 0.521683 0.772057
vn -0.616260 0.542253 0.571093
vn -0.543168 0.194830 0.816675
vn -0.351543 0.770226 0.532090
vn -0.358592 0.854244 0.376324
vn -0.539201 0.823176 0.177709
vn -0.719321 0.561998 0.408246
vn -0.349284 0.918699 0.184210
vn -0.349284 0.918699 -0.184210
vn -0.539201 0.823176 -0.177709
vn -0.358592 0.854244 -0.376324
vn -0.096133 0.976104 -0.194739
vn -0.094699 0.913083 -0.396558
vn -0.087039 0.824763 -0.558702
vn -0.351543 0.770226 -0.532090
vn -0.087039 0.558702 -0.824763
vn -0.362957 0.521683 -0.772057
vn -0.094699 0.396558 -0.913083
vn -0.369396 0.385632 -0.845454
vn -0.096133 0.194739 -0.976104
vn -0.349284 0.184210 -0.918699
vn -0.096133 -0.194739 -0.976104
vn -0.349284 -0.184210 -0.918699
vn -0.094699 -0.396558 -0.913083
vn -0.369396 -0.385632 -0.845454
vn -0.087039 -0.558702 -0.824763
vn -0.362957 -0.521683 -0.772057
vn -0.087039 -0.824763 -0.558702
vn -0.351543 -0.770226 -0.532090
vn -0.094699 -0.913083 -0.396558
vn -0.358592 -0.854244 -0.376324
vn -0.096133 -0.976104 -0.194739
vn -0.349284 -0.918699 -0.184210
vn -0.096133 -0.976104 0.194739
vn -0.349284 -0.918699 0.184210
vn -0.094699 -0.913083 0.396558
vn -0.358592 -0.854244 0.376324
vn -0.087039 -0.824763 0.558702
vn -0.351543 -0.770226 0.532090
vn -0.087039 -0.558702 0.824763
vn -0.362957 -0.521683 0.772057
vn -0.094699 -0.396558 0.913083
vn -0.369396 -0.385632 0.845454
vn -0.096133 -0.194739 0.976104
vn -0.349284 -0.184210 0.918699
vn -0.096133 0.194739 0.976104
vn -0.349284 0.184210 0.918699
vn -0.094699 0.396558 0.913083
vn 0.000000 0.197546 0.980285
vn 0.000000 0.397382 0.917631
vn 0.000000 0.566698 0.823878
vn -0.087039 0.558702 0.824763
vn 0.000000 0.823878 0.566698
vn -0.087039 0.824763 0.558702
vn 0.000000 0.917631 0.397382
vn -0.094699 0.913083 0.396558
vn 0.000000 0.980285 0.197546
vn -0.096133 0.976104 0.194739
vn 0.000000 0.980285 -0.197546
vn 0.000000 -0.197546 0.980285
vn 0.000000 -0.397382 0.917631
vn 0.000000 -0.566698 0.823878
vn 0.000000 -0.823878 0.566698
vn 0.000000 -0.917631 0.397382
vn 0.000000 -0.980285 0.197546
vn 0.000000 -0.980285 -0.197546
vn 0.000000 -0.917631 -0.397382
vn 0.000000 -0.823878 -0.566698
vn 0.000000 -0.566698 -0.823878
vn 0.000000 -0.397382 -0.917631
vn 0.000000 -0.197546 -0.980285
vn 0.000000 0.197546 -0.980285
vn 0.000000 0.397382 -0.917631
vn 0.000000 0.566698 -0.823878
vn 0.000000 0.823878 -0.566698
vn 0.000000 0.917631 -0.397382
vn 0.087039 0.824763 0.558702
vn 0.094699 0.913083 0.396558
vn 0.087039 0.558702 0.824763
vn 0.094699 0.396558 0.913083
vn 0.096133 0.194739 0.976104
vn 0.096133 -0.194739 0.976104
vn 0.094699 -0.396558 0.913083
vn 0.087039 -0.558702 0.824763
vn 0.087039 -0.824763 0.558702
vn 0.351543 -0.770226 0.532090
vn 0.362957 -0.521683 0.772057
vn 0.094699 -0.913083 0.396558
vn 0.358592 -0.854244 0.376324
vn 0.659597 -0.728843 0.183477
vn 0.719321 -0.561998 0.408246
vn 0.616260 -0.542253 0.571093
vn 0.539201 -0.823176 0.177709
vn 0.726707 -0.388348 0.566637
vn 0.655629 -0.191717 0.730308
vn 0.543168 -0.194830 0.816675
vn 0.369396 -0.385632 0.845454
vn 0.655629 0.191717 0.730308
vn 0.543168 0.194830 0.816675
vn 0.729942 0.381756 0.566942
vn 0.616260 0.542253 0.571093
vn 0.362957 0.521683 0.772057
vn 0.369396 0.385632 0.845454
vn 0.351543 0.770226 0.532090
vn 0.349284 0.184210 0.918699
vn 0.850795 0.191351 0.489364
vn 0.966216 0.182501 0.181890
vn 0.850337 0.491104 0.188971
vn 0.732719 0.541581 0.412000
vn 0.659597 0.728843 0.183477
vn 0.847621 0.499496 -0.178869
vn 0.659597 0.728843 -0.183477
vn 0.719321 0.561998 -0.408246
vn 0.966369 0.181768 -0.181768
vn 0.848079 0.178320 -0.498917
vn 0.726707 0.388348 -0.566637
vn 0.850795 -0.191351 -0.489364
vn 0.966216 -0.182501 -0.181890
vn 0.850337 -0.491104 -0.188971
vn 0.732719 -0.541581 -0.412000
vn 0.729942 -0.381756 -0.566942
vn 0.659597 -0.728843 -0.183477
vn 0.847621 -0.499496 0.178869
vn 0.539201 -0.823176 -0.177709
vn 0.358592 -0.854244 -0.376324
vn 0.351543 -0.770226 -0.532090
vn 0.616260 -0.542253 -0.571093
vn 0.349284 -0.918699 -0.184210
vn 0.094699 -0.913083 -0.396558
vn 0.096133 -0.976104 -0.194739
vn 0.362957 -0.521683 -0.772057
vn 0.369396 -0.385632 -0.845454
vn 0.543168 -0.194830 -0.816675
vn 0.655629 -0.191717 -0.730308
vn 0.543168 0.194830 -0.816675
vn 0.655629 0.191717 -0.730308
vn 0.369396 0.385632 -0.845454
vn 0.362957 0.521683 -0.772057
vn 0.616260 0.542253 -0.571093
vn 0.351543 0.770226 -0.532090
vn 0.349284 0.184210 -0.918699
vn 0.349284 -0.184210 -0.918699
vn 0.087039 -0.558702 -0.824763
vn 0.087039 -0.824763 -0.558702
vn 0.358592 0.854244 -0.376324
vn 0.539201 0.823176 -0.177709
vn 0.349284 0.918699 -0.184210
vn 0.539201 0.823176 0.177709
vn 0.349284 0.918699 0.184210
vn 0.358592 0.854244 0.376324
vn 0.096133 0.976104 0.194739
vn 0.096133 0.976104 -0.194739
vn 0.094699 0.913083 -0.396558
vn 0.087039 0.824763 -0.558702
vn 0.349284 -0.184210 0.918699
vn 0.848079 -0.178320 0.498917
vn 0.096133 -0.976104 0.194739
vn -0.543168 -0.194830 0.816675
vn -0.616260 -0.542253 0.571093
vn -0.539201 -0.823176 0.177709
vn -0.539201 -0.823176 -0.177709
vn -0.616260 -0.542253 -0.571093
vn -0.616260 0.542253 -0.571093
vn -0.543168 -0.194830 -0.816675
vn -0.543168 0.194830 -0.816675
vn -0.655629 0.191717 -0.730308
vn -0.655629 -0.191717 -0.730308
vn 0.349284 -0.918699 0.184210
vn 0.966369 -0.181768 0.181768
vn 0.096133 0.194739 -0.976104
vn 0.096133 -0.194739 -0.976104
vn 0.094699 -0.396558 -0.913083
vn 0.094699 0.396558 -0.913083
vn 0.087039 0.558702 -0.824763
s 1
f 1//1 4//2 3//3 2//4
f 5//5 3//3 4//2
f 7//6 3//3 5//5 6//7
f 8//8 7//6 6//7
f 7//6 8//8 10//9 9//10
f 12//11 9//10 10//9 11//12
f 13//13 12//11 11//12
f 12//11 13//13 14//14
f 16//15 12//11 14//14 15//16
f 17//17 16//15 15//16
f 19//18 16//15 17//17 18//19
f 20//20 19//18 18//19
f 22//21 21//22 19//18 20//20
f 24//23 22//21 20//20 23//24
f 22//21 24//23 25//25
f 28//26 27//27 26//28 25//25
f 24//23 29//29 28//26 25//25
f 26//28 27//27 30//30
f 1//1 30//30 32//31 31//32
f 1//1 33//33 26//28 30//30
f 31//32 32//31 34//34
f 36//35 35//36 31//32 34//34
f 37//37 35//36 36//35
f 39//38 38//39 37//37 36//35
f 37//37 38//39 41//40 40//41
f 41//40 43//42 42//43 40//41
f 42//43 43//42 45//44 44//45
f 45//44 47//46 46//47 44//45
f 46//47 47//46 49//48 48//49
f 48//49 49//48 51//50 50//51
f 51//50 53//52 52//53 50//51
f 52//53 53//52 55//54 54//55
f 55//54 57//56 56//57 54//55
f 56//57 57//56 59//58 58//59
f 58//59 59//58 61//60 60//61
f 61//60 63//62 62//63 60//61
f 62//63 63//62 65//64 64//65
f 65//64 67//66 66//67 64//65
f 66//67 67//66 69//68 68//69
f 69//68 71//70 70//71 68//69
f 71//70 73//72 72//73 70//71
f 72//73 73//72 74//74 28//26
f 73//72 76//75 75//76 74//74
f 75//76 78//77 77//78 74//74
f 77//78 78//77 80//79 79//80
f 80//79 82//81 81//82 79//80
f 81//82 82//81 84//83 83//84
f 84//83 85//85 39//38 83//84
f 78//77 87//77 86//79 80//79
f 87//77 89//77 88//79 86//79
f 91//76 89//77 87//77 90//76
f 93//75 92//75 91//76 90//76
f 95//86 92//75 93//75 94//86
f 97//87 95//86 94//86 96//87
f 99//88 98//88 97//87 96//87
f 101//89 98//88 99//88 100//89
f 103//90 102//90 101//89 100//89
f 102//90 105//90 104//89 101//89
f 107//91 105//90 102//90 106//91
f 109//92 108//92 107//91 106//91
f 111//93 110//93 108//92 109//92
f 113//94 110//93 111//93 112//94
f 115//95 114//95 113//94 112//94
f 117//96 114//95 115//95 116//96
f 119//97 118//97 117//96 116//96
f 121//98 120//98 118//97 119//97
f 123//99 120//98 121//98 122//99
f 125//100 124//100 123//99 122//99
f 127//101 124//100 125//100 126//101
f 129//102 128//102 127//101 126//101
f 131//85 128//102 129//102 130//85
f 133//83 131//85 130//85 132//83
f 135//81 134//81 133//83 132//83
f 136//79 134//81 135//81 88//79
f 138//103 137//104 134//81 136//79
f 140//77 139//105 138//103 136//79
f 142//106 139//105 140//77 141//76
f 144//75 143//107 142//106 141//76
f 146//108 143//107 144//75 145//86
f 148//109 146//108 145//86 147//87
f 150//88 149//110 148//109 147//87
f 151//111 149//110 150//88 104//89
f 153//112 152//113 149//110 151//111
f 155//114 154//115 153//112 151//111
f 158//116 157//117 156//118 153//112
f 154//115 159//119 158//116 153//112
f 156//118 157//117 160//120
f 160//120 163//121 162//122 161//123
f 152//113 156//118 160//120 161//123
f 165//124 164//125 162//122 163//121
f 169//126 168//127 167//128 166//129
f 164//125 165//124 169//126 166//129
f 167//128 168//127 170//130
f 171//131 164//125 166//129
f 165//124 172//132 169//126
f 175//133 174//134 173//135 169//126
f 172//132 175//133 169//126
f 173//135 174//134 176//136
f 174//134 178//137 177//138 176//136
f 178//137 179//139 177//138
f 178//137 182//140 181//141 180//142
f 179//139 178//137 180//142
f 184//143 181//141 182//140 183//144
f 183//144 187//145 186//146 185//147
f 184//143 183//144 185//147
f 186//146 187//145 188//148
f 188//148 187//145 189//149 158//116
f 188//148 192//150 191//151 190//152
f 193//153 186//146 188//148 190//152
f 191//151 192//150 194//154
f 196//155 191//151 194//154 195//156
f 197//157 193//153 190//152
f 185//147 193//153 197//157 198//158
f 200//159 199//160 185//147 198//158
f 200//159 202//161 201//162 199//160
f 180//142 201//162 202//161 203//163
f 205//164 204//165 180//142 203//163
f 204//165 205//164 206//166
f 202//161 207//167 203//163
f 207//167 202//161 200//159 208//168
f 208//168 200//159 198//158
f 210//169 197//157 190//152 209//170
f 190//152 191//151 196//155 209//170
f 199//160 184//143 185//147
f 186//146 193//153 185//147
f 201//162 181//141 184//143 199//160
f 181//141 201//162 180//142
f 204//165 179//139 180//142
f 177//138 179//139 204//165 206//166
f 212//171 211//172 177//138 206//166
f 211//172 212//171 213//173
f 215//174 211//172 213//173 214//175
f 216//176 215//174 214//175
f 137//104 216//176 214//175 217//177
f 214//175 213//173 218//178 217//177
f 213//173 212//171 219//179 218//178
f 219//179 212//171 206//166 220//180
f 182//140 178//137 174//134 175//133
f 162//122 164//125 171//131 221//181
f 222//182 172//132 165//124 163//121
f 162//122 221//181 161//123
f 222//182 163//121 160//120
f 159//119 192//150 188//148 158//116
f 189//149 157//117 158//116
f 156//118 152//113 153//112
f 149//110 152//113 161//123 148//109
f 161//123 221//181 146//108 148//109
f 221//181 171//131 143//107 146//108
f 143//107 171//131 166//129 142//106
f 166//129 167//128 139//105 142//106
f 139//105 167//128 170//130 138//103
f 134//81 137//104 217//177 133//83
f 217//177 218//178 131//85 133//83
f 218//178 219//179 128//102 131//85
f 130//85 129//102 224//102 223//85
f 223//85 224//102 225//102 85//85
f 225//102 224//102 227//101 226//101
f 128//102 219//179 220//180 127//101
f 224//102 129//102 126//101 227//101
f 114//95 210//169 209//170 113//94
f 229//95 115//95 112//94 228//94
f 231//95 229//95 228//94 230//94
f 228//94 233//93 232//93 230//94
f 232//93 233//93 235//92 234//92
f 209//170 196//155 110//93 113//94
f 112//94 111//93 233//93 228//94
f 110//93 196//155 195//156 108//92
f 233//93 111//93 109//92 235//92
f 108//92 195//156 236//183 107//91
f 236//183 155//114 105//90 107//91
f 105//90 155//114 151//111 104//89
f 238//90 103//90 100//89 237//89
f 104//89 150//88 98//88 101//89
f 100//89 99//88 239//88 237//89
f 98//88 150//88 147//87 97//87
f 239//88 99//88 96//87 240//87
f 147//87 145//86 95//86 97//87
f 96//87 94//86 241//86 240//87
f 145//86 144//75 92//75 95//86
f 94//86 93//75 76//75 241//86
f 92//75 144//75 141//76 91//76
f 141//76 140//77 89//77 91//76
f 89//77 140//77 136//79 88//79
f 90//76 87//77 78//77 75//76
f 76//75 93//75 90//76 75//76
f 241//86 76//75 73//72 71//70
f 72//73 29//29 242//184 70//71
f 240//87 241//86 71//70 69//68
f 70//71 242//184 68//69
f 67//66 239//88 240//87 69//68
f 68//69 242//184 23//24 18//19
f 243//185 66//67 68//69 18//19
f 237//89 239//88 67//66 65//64
f 66//67 243//185 64//65
f 63//62 238//90 237//89 65//64
f 244//91 238//90 63//62 61//60
f 62//63 245//186 60//61
f 59//58 234//92 244//91 61//60
f 245//186 246//187 58//59 60//61
f 57//56 232//93 234//92 59//58
f 246//187 56//57 58//59
f 230//94 232//93 57//56 55//54
f 53//52 231//95 230//94 55//54
f 247//188 52//53 54//55
f 248//96 231//95 53//52 51//50
f 49//48 249//97 248//96 51//50
f 47//46 250//98 249//97 49//48
f 251//99 250//98 47//46 45//44
f 43//42 252//100 251//99 45//44
f 226//101 252//100 43//42 41//40
f 38//39 225//102 226//101 41//40
f 85//85 225//102 38//39 39//38
f 83//84 39//38 36//35 34//34
f 32//31 81//82 83//84 34//34
f 79//80 81//82 32//31 30//30
f 27//27 77//78 79//80 30//30
f 26//28 33//33 25//25
f 29//29 72//73 28//26
f 74//74 77//78 27//27 28//26
f 242//184 29//29 24//23 23//24
f 23//24 20//20 18//19
f 17//17 243//185 18//19
f 64//65 243//185 17//17 15//16
f 245//186 62//63 64//65 15//16
f 14//14 246//187 245//186 15//16
f 54//55 56//57 246//187 14//14
f 13//13 247//188 54//55 14//14
f 19//18 9//10 12//11 16//15
f 247//188 13//13 11//12
f 21//22 7//6 9//10 19//18
f 5//5 253//189 6//7
f 40//41 253//189 5//5 4//2
f 35//36 37//37 40//41 4//2
f 1//1 31//32 35//36 4//2
f 2//4 3//3 7//6 21//22
f 33//33 1//1 2//4
f 2//4 21//22 22//21 25//25
f 33//33 2//4 25//25
f 255//190 254//191 46//47 48//49
f 255//190 48//49 50//51
f 257//192 254//191 255//190 256//193
f 50//51 52//53 247//188 11//12
f 256//193 255//190 50//51 11//12
f 10//9 8//8 257//192 256//193
f 10//9 256//193 11//12
f 46//47 254//191 44//45
f 42//43 253//189 40//41
f 44//45 254//191 257//192 6//7
f 253//189 42//43 44//45 6//7
f 257//192 8//8 6//7
f 235//92 109//92 106//91 258//91
f 106//91 102//90 103//90 258//91
f 234//92 235//92 258//91 244//91
f 258//91 103//90 238//90 244//91
f 132//83 130//85 223//85 259//83
f 260//81 135//81 132//83 259//83
f 88//79 135//81 260//81 86//79
f 259//83 223//85 85//85 84//83
f 82//81 260//81 259//83 84//83
f 86//79 260//81 82//81 80//79
f 262//98 121//98 119//97 261//97
f 261//97 119//97 116//96 263//96
f 116//96 115//95 229//95 263//96
f 250//98 262//98 261//97 249//97
f 249//97 261//97 263//96 248//96
f 263//96 229//95 231//95 248//96
f 122//99 121//98 262//98 264//99
f 126//101 125//100 265//100 227//101
f 265//100 125//100 122//99 264//99
f 264//99 262//98 250//98 251//99
f 227//101 265//100 252//100 226//101
f 252//100 265//100 264//99 251//99
f 194//154 192//150 159//119 266//194
f 159//119 154//115 266//194
f 195//156 194//154 266//194 236//183
f 266//194 154//115 155//114 236//183
f 183//144 182//140 175//133 267//195
f 187//145 183//144 267//195 189//149
f 267//195 175//133 172//132 222//182
f 189//149 267//195 222//182 160//120
f 157//117 189//149 160//120
f 177//138 211//172 215//174 176//136
f 176//136 215//174 216//176 170//130
f 168//127 173//135 176//136 170//130
f 173//135 168//127 169//126
f 170//130 216//176 137//104 138//103
f 269//196 207//167 208//168 268//197
f 268//197 208//168 198//158 270//198
f 198//158 197//157 210//169 270//198
f 120//98 269//196 268//197 118//97
f 118//97 268//197 270//198 117//96
f 270//198 210//169 114//95 117//96
f 203//163 207//167 269//196 271//199
f 206//166 205//164 272//200 220//180
f 272//200 205//164 203//163 271//199
f 271//199 269//196 120//98 123//99
f 220//180 272//200 124//100 127//101
f 124//100 272//200 271//199 123//99

View File

@@ -0,0 +1,132 @@
# Blender v2.63 (sub 0) OBJ File: 'unit_cone.blend'
# www.blender.org
o Cone
v 0.000000 -0.500000 -0.500000
v 0.000000 0.500000 0.000000
v 0.097545 -0.500000 -0.490393
v 0.191342 -0.500000 -0.461940
v 0.277785 -0.500000 -0.415735
v 0.353553 -0.500000 -0.353553
v 0.415735 -0.500000 -0.277785
v 0.461940 -0.500000 -0.191342
v 0.490393 -0.500000 -0.097545
v 0.500000 -0.500000 -0.000000
v 0.490393 -0.500000 0.097545
v 0.461940 -0.500000 0.191342
v 0.415735 -0.500000 0.277785
v 0.353553 -0.500000 0.353553
v 0.277785 -0.500000 0.415735
v 0.191342 -0.500000 0.461940
v 0.097545 -0.500000 0.490393
v -0.000000 -0.500000 0.500000
v -0.097545 -0.500000 0.490393
v -0.191342 -0.500000 0.461940
v -0.277785 -0.500000 0.415735
v -0.353554 -0.500000 0.353553
v -0.415735 -0.500000 0.277785
v -0.461940 -0.500000 0.191341
v -0.490393 -0.500000 0.097545
v -0.500000 -0.500000 -0.000000
v -0.490393 -0.500000 -0.097546
v -0.461940 -0.500000 -0.191342
v -0.415734 -0.500000 -0.277786
v -0.353553 -0.500000 -0.353554
v -0.277785 -0.500000 -0.415735
v -0.191341 -0.500000 -0.461940
v -0.097544 -0.500000 -0.490393
vn -0.259887 0.445488 -0.856737
vn 0.087754 0.445488 -0.890977
vn -0.087753 0.445488 -0.890977
vn 0.259888 0.445488 -0.856737
vn -0.422035 0.445488 -0.789574
vn -0.567964 0.445488 -0.692068
vn -0.692066 0.445488 -0.567965
vn -0.789573 0.445488 -0.422037
vn -0.856737 0.445488 -0.259889
vn -0.890977 0.445488 -0.087754
vn -0.890977 0.445488 0.087753
vn -0.856737 0.445488 0.259887
vn -0.789574 0.445488 0.422035
vn -0.692067 0.445488 0.567964
vn -0.567965 0.445488 0.692066
vn -0.422036 0.445488 0.789573
vn -0.259888 0.445488 0.856737
vn -0.087754 0.445488 0.890977
vn 0.087753 0.445488 0.890977
vn 0.259888 0.445488 0.856737
vn 0.422035 0.445488 0.789573
vn 0.567965 0.445488 0.692067
vn 0.692067 0.445488 0.567965
vn 0.789573 0.445488 0.422035
vn 0.856737 0.445488 0.259888
vn 0.890977 0.445488 0.087753
vn 0.890977 0.445488 -0.087754
vn 0.856737 0.445488 -0.259888
vn 0.789573 0.445488 -0.422036
vn 0.692067 0.445488 -0.567964
vn 0.567964 0.445488 -0.692067
vn 0.422036 0.445488 -0.789573
vn 0.000000 -1.000000 -0.000000
s off
f 32//1 2//1 33//1
f 1//2 2//2 3//2
f 2//3 1//3 33//3
f 3//4 2//4 4//4
f 31//5 2//5 32//5
f 30//6 2//6 31//6
f 29//7 2//7 30//7
f 28//8 2//8 29//8
f 27//9 2//9 28//9
f 26//10 2//10 27//10
f 25//11 2//11 26//11
f 24//12 2//12 25//12
f 23//13 2//13 24//13
f 22//14 2//14 23//14
f 21//15 2//15 22//15
f 20//16 2//16 21//16
f 19//17 2//17 20//17
f 18//18 2//18 19//18
f 17//19 2//19 18//19
f 16//20 2//20 17//20
f 15//21 2//21 16//21
f 14//22 2//22 15//22
f 13//23 2//23 14//23
f 12//24 2//24 13//24
f 11//25 2//25 12//25
f 10//26 2//26 11//26
f 9//27 2//27 10//27
f 8//28 2//28 9//28
f 7//29 2//29 8//29
f 6//30 2//30 7//30
f 5//31 2//31 6//31
f 4//32 2//32 5//32
f 1//33 3//33 33//33
f 3//33 32//33 33//33
f 3//33 4//33 32//33
f 4//33 31//33 32//33
f 4//33 5//33 31//33
f 5//33 30//33 31//33
f 5//33 6//33 30//33
f 6//33 29//33 30//33
f 6//33 7//33 29//33
f 7//33 28//33 29//33
f 7//33 8//33 28//33
f 8//33 27//33 28//33
f 8//33 9//33 27//33
f 9//33 26//33 27//33
f 9//33 10//33 26//33
f 10//33 25//33 26//33
f 10//33 11//33 25//33
f 11//33 24//33 25//33
f 11//33 12//33 24//33
f 12//33 23//33 24//33
f 12//33 13//33 23//33
f 13//33 22//33 23//33
f 13//33 14//33 22//33
f 14//33 21//33 22//33
f 14//33 15//33 21//33
f 15//33 20//33 21//33
f 15//33 16//33 20//33
f 16//33 19//33 20//33
f 16//33 17//33 19//33
f 17//33 18//33 19//33

View File

@@ -0,0 +1,200 @@
# Blender v2.63 (sub 0) OBJ File: 'unit_cylinder.blend'
# www.blender.org
o Cylinder_Cylinder.001
v 0.000000 -0.500000 0.000000
v 0.000000 0.500000 0.000000
v 0.000000 -0.500000 -0.500000
v 0.000000 0.500000 -0.500000
v 0.097545 -0.500000 -0.490393
v 0.097545 0.500000 -0.490393
v 0.191342 -0.500000 -0.461940
v 0.191342 0.500000 -0.461940
v 0.277785 -0.500000 -0.415735
v 0.277785 0.500000 -0.415735
v 0.353553 -0.500000 -0.353553
v 0.353553 0.500000 -0.353553
v 0.415735 -0.500000 -0.277785
v 0.415735 0.500000 -0.277785
v 0.461940 -0.500000 -0.191342
v 0.461940 0.500000 -0.191342
v 0.490393 -0.500000 -0.097545
v 0.490393 0.500000 -0.097545
v 0.500000 -0.500000 -0.000000
v 0.500000 0.500000 -0.000000
v 0.490393 -0.500000 0.097545
v 0.490393 0.500000 0.097545
v 0.461940 -0.500000 0.191342
v 0.461940 0.500000 0.191342
v 0.415735 -0.500000 0.277785
v 0.415735 0.500000 0.277785
v 0.353553 -0.500000 0.353553
v 0.353553 0.500000 0.353553
v 0.277785 -0.500000 0.415735
v 0.277785 0.500000 0.415735
v 0.191342 -0.500000 0.461940
v 0.191342 0.500000 0.461940
v 0.097545 -0.500000 0.490393
v 0.097545 0.500000 0.490393
v -0.000000 -0.500000 0.500000
v -0.000000 0.500000 0.500000
v -0.097545 -0.500000 0.490393
v -0.097545 0.500000 0.490393
v -0.191342 -0.500000 0.461940
v -0.191342 0.500000 0.461940
v -0.277785 -0.500000 0.415735
v -0.277785 0.500000 0.415735
v -0.353554 -0.500000 0.353553
v -0.353554 0.500000 0.353553
v -0.415735 -0.500000 0.277785
v -0.415735 0.500000 0.277785
v -0.461940 -0.500000 0.191341
v -0.461940 0.500000 0.191341
v -0.490393 -0.500000 0.097545
v -0.490393 0.500000 0.097545
v -0.500000 -0.500000 -0.000000
v -0.500000 0.500000 -0.000000
v -0.490393 -0.500000 -0.097546
v -0.490393 0.500000 -0.097546
v -0.461940 -0.500000 -0.191342
v -0.461940 0.500000 -0.191342
v -0.415734 -0.500000 -0.277786
v -0.415734 0.500000 -0.277786
v -0.353553 -0.500000 -0.353554
v -0.353553 0.500000 -0.353554
v -0.277785 -0.500000 -0.415735
v -0.277785 0.500000 -0.415735
v -0.191341 -0.500000 -0.461940
v -0.191341 0.500000 -0.461940
v -0.097544 -0.500000 -0.490393
v -0.097544 0.500000 -0.490393
vn -0.000000 -1.000000 0.000000
vn 0.000000 1.000000 -0.000000
vn 0.098017 0.000000 -0.995185
vn 0.290284 0.000000 -0.956940
vn 0.471397 0.000000 -0.881921
vn 0.634393 0.000000 -0.773011
vn 0.773011 0.000000 -0.634393
vn 0.881921 0.000000 -0.471397
vn 0.956940 0.000000 -0.290284
vn 0.995185 0.000000 -0.098017
vn 0.995185 0.000000 0.098017
vn 0.956940 0.000000 0.290285
vn 0.881921 0.000000 0.471396
vn 0.773010 0.000000 0.634393
vn 0.634393 0.000000 0.773010
vn 0.471396 0.000000 0.881921
vn 0.290285 0.000000 0.956940
vn 0.098017 0.000000 0.995185
vn -0.098018 0.000000 0.995185
vn -0.290285 0.000000 0.956940
vn -0.471397 0.000000 0.881921
vn -0.634394 0.000000 0.773010
vn -0.773011 0.000000 0.634393
vn -0.881922 0.000000 0.471396
vn -0.956941 0.000000 0.290284
vn -0.995185 0.000000 0.098016
vn -0.995185 0.000000 -0.098018
vn -0.956940 0.000000 -0.290286
vn -0.881921 0.000000 -0.471398
vn -0.773010 0.000000 -0.634394
vn -0.634392 0.000000 -0.773011
vn -0.471395 0.000000 -0.881922
vn -0.290283 0.000000 -0.956941
vn -0.098016 0.000000 -0.995185
s off
f 1//1 3//1 5//1
f 2//2 6//2 4//2
f 3//3 4//3 6//3 5//3
f 1//1 5//1 7//1
f 2//2 8//2 6//2
f 5//4 6//4 8//4 7//4
f 1//1 7//1 9//1
f 2//2 10//2 8//2
f 7//5 8//5 10//5 9//5
f 1//1 9//1 11//1
f 2//2 12//2 10//2
f 9//6 10//6 12//6 11//6
f 1//1 11//1 13//1
f 2//2 14//2 12//2
f 11//7 12//7 14//7 13//7
f 1//1 13//1 15//1
f 2//2 16//2 14//2
f 13//8 14//8 16//8 15//8
f 1//1 15//1 17//1
f 2//2 18//2 16//2
f 15//9 16//9 18//9 17//9
f 1//1 17//1 19//1
f 2//2 20//2 18//2
f 17//10 18//10 20//10 19//10
f 1//1 19//1 21//1
f 2//2 22//2 20//2
f 19//11 20//11 22//11 21//11
f 1//1 21//1 23//1
f 2//2 24//2 22//2
f 21//12 22//12 24//12 23//12
f 1//1 23//1 25//1
f 2//2 26//2 24//2
f 23//13 24//13 26//13 25//13
f 1//1 25//1 27//1
f 2//2 28//2 26//2
f 25//14 26//14 28//14 27//14
f 1//1 27//1 29//1
f 2//2 30//2 28//2
f 27//15 28//15 30//15 29//15
f 1//1 29//1 31//1
f 2//2 32//2 30//2
f 29//16 30//16 32//16 31//16
f 1//1 31//1 33//1
f 2//2 34//2 32//2
f 31//17 32//17 34//17 33//17
f 1//1 33//1 35//1
f 2//2 36//2 34//2
f 33//18 34//18 36//18 35//18
f 1//1 35//1 37//1
f 2//2 38//2 36//2
f 35//19 36//19 38//19 37//19
f 1//1 37//1 39//1
f 2//2 40//2 38//2
f 37//20 38//20 40//20 39//20
f 1//1 39//1 41//1
f 2//2 42//2 40//2
f 39//21 40//21 42//21 41//21
f 1//1 41//1 43//1
f 2//2 44//2 42//2
f 41//22 42//22 44//22 43//22
f 1//1 43//1 45//1
f 2//2 46//2 44//2
f 43//23 44//23 46//23 45//23
f 1//1 45//1 47//1
f 2//2 48//2 46//2
f 45//24 46//24 48//24 47//24
f 1//1 47//1 49//1
f 2//2 50//2 48//2
f 47//25 48//25 50//25 49//25
f 1//1 49//1 51//1
f 2//2 52//2 50//2
f 49//26 50//26 52//26 51//26
f 1//1 51//1 53//1
f 2//2 54//2 52//2
f 51//27 52//27 54//27 53//27
f 1//1 53//1 55//1
f 2//2 56//2 54//2
f 53//28 54//28 56//28 55//28
f 1//1 55//1 57//1
f 2//2 58//2 56//2
f 55//29 56//29 58//29 57//29
f 1//1 57//1 59//1
f 2//2 60//2 58//2
f 57//30 58//30 60//30 59//30
f 1//1 59//1 61//1
f 2//2 62//2 60//2
f 59//31 60//31 62//31 61//31
f 1//1 61//1 63//1
f 2//2 64//2 62//2
f 61//32 62//32 64//32 63//32
f 1//1 63//1 65//1
f 2//2 66//2 64//2
f 63//33 64//33 66//33 65//33
f 1//1 65//1 3//1
f 2//2 4//2 66//2
f 65//34 66//34 4//34 3//34

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 513 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,12 @@
#version 140
in vec4 frag_Color;
out vec4 final_Color;
void
main()
{
final_Color = frag_Color;
}

View File

@@ -0,0 +1,23 @@
#version 140
uniform mat4 mvp_Transform;
uniform vec3 Scale;
in vec3 Site;
in vec4 Color;
out vec3 frag_Site;
out vec4 frag_Color;
void main()
{
// Pass some variables to the fragment shader.
//
frag_Site = Site;
frag_Color = Color;
// Apply all matrix transformations to 'Site'.
//
gl_Position = mvp_Transform * vec4 (Site * Scale, 1);
}

View File

@@ -0,0 +1,15 @@
#version 140
uniform sampler2D sTexture;
varying vec4 vColor;
varying vec2 vCoords;
void main()
{
gl_FragColor = mix (texture2D (sTexture, vCoords),
vColor,
0.5);
}

View File

@@ -0,0 +1,19 @@
#version 140
uniform mat4 mvp_Transform;
uniform vec3 Scale;
attribute vec3 Site;
attribute vec4 Color;
attribute vec2 Coords;
varying vec4 vColor;
varying vec2 vCoords;
void main()
{
gl_Position = mvp_Transform * vec4 (Site * Scale, 1.0);
vColor = Color;
vCoords = Coords;
}

View File

@@ -0,0 +1,123 @@
#version 140
struct light
{
vec4 Site;
vec3 Color;
float Attenuation;
float ambient_Coefficient;
float cone_Angle;
vec3 cone_Direction;
};
uniform mat4 model_Transform;
uniform mat3 inverse_model_Rotation;
uniform vec3 camera_Site;
uniform vec3 specular_Color; // The materials specular color.
uniform int light_Count;
uniform light Lights [10];
in vec3 frag_Site;
in vec3 frag_Normal;
in vec4 frag_Color;
in float frag_Shine;
out vec4 final_Color;
vec3
apply_Light (light Light,
vec3 surface_Color,
vec3 Normal,
vec3 surface_Site,
vec3 Surface_to_Camera)
{
vec3 Surface_to_Light;
float Attenuation = 1.0;
if (Light.Site.w == 0.0)
{
// Directional light.
//
Surface_to_Light = normalize (-Light.Site.xyz);
Attenuation = 1.0; // No attenuation for directional lights.
}
else
{
// Point light.
//
vec3 Surface_to_Light_vector = Light.Site.xyz - surface_Site;
float Distance_to_Light = length (Surface_to_Light_vector);
Surface_to_Light = normalize (Surface_to_Light_vector);
Attenuation = 1.0
/ ( 1.0
+ Light.Attenuation
* pow (Distance_to_Light, 2));
// Cone restrictions which affects attenuation.
//
float Light_to_Surface_Angle = degrees (acos (dot (-Surface_to_Light,
normalize (Light.cone_Direction))));
if (Light_to_Surface_Angle > Light.cone_Angle)
{
Attenuation = 0.0;
}
}
vec3 lit_surface_Color = surface_Color * Light.Color;
vec3 Ambient = Light.ambient_Coefficient * lit_surface_Color;
float diffuse_Coefficient = max (0.0,
dot (Normal,
Surface_to_Light));
vec3 Diffuse = diffuse_Coefficient * lit_surface_Color;
float specular_Coefficient = 0.0;
if (diffuse_Coefficient > 0.0)
specular_Coefficient = pow (max (0.0,
dot (Surface_to_Camera,
reflect (-Surface_to_Light,
Normal))),
frag_Shine);
vec3 Specular = specular_Coefficient * specular_Color * Light.Color;
return Ambient + Attenuation * (Diffuse + Specular); // Linear color (before gamma correction).
}
void
main()
{
vec3 surface_Site = vec3 ( model_Transform
* vec4 (frag_Site, 1));
vec4 surface_Color = frag_Color;
vec3 Surface_to_Camera = normalize (camera_Site - surface_Site);
vec3 Normal = normalize ( frag_Normal
* inverse_model_Rotation);
// Combine color from all the lights.
//
vec3 linear_Color = vec3 (0);
for (int i = 0; i < light_Count; ++i)
{
linear_Color += apply_Light (Lights [i],
surface_Color.rgb,
Normal,
surface_Site,
Surface_to_Camera);
}
vec3 Gamma = vec3 (1.0 / 2.2);
final_Color = vec4 (pow (linear_Color, // Final color (after gamma correction).
Gamma),
surface_Color.a);
}

View File

@@ -0,0 +1,29 @@
#version 140
uniform mat4 mvp_Transform;
uniform vec3 Scale;
in vec3 Site;
in vec3 Normal;
in vec4 Color;
in float Shine;
out vec3 frag_Site;
out vec3 frag_Normal;
out vec4 frag_Color;
out float frag_Shine;
void main()
{
// Pass some variables to the fragment shader.
//
frag_Site = Site;
frag_Normal = Normal;
frag_Color = Color;
frag_Shine = Shine;
// Apply all matrix transformations to 'Site'.
//
gl_Position = mvp_Transform * vec4 (Site * Scale, 1);
}

View File

@@ -0,0 +1,127 @@
#version 140
struct light
{
vec4 Site;
vec3 Color;
float Attenuation;
float ambient_Coefficient;
float cone_Angle;
vec3 cone_Direction;
};
uniform mat4 model_Transform;
uniform mat3 inverse_model_Rotation;
uniform vec3 camera_Site;
uniform vec3 specular_Color; // The materials specular color.
uniform sampler2D Texture;
uniform int light_Count;
uniform light Lights [10];
in vec3 frag_Site;
in vec3 frag_Normal;
in vec4 frag_Color;
in vec2 frag_Coords;
in float frag_Shine;
out vec4 final_Color;
vec3
apply_Light (light Light,
vec3 surface_Color,
vec3 Normal,
vec3 surface_Site,
vec3 Surface_to_Camera)
{
vec3 Surface_to_Light;
float Attenuation = 1.0;
if (Light.Site.w == 0.0)
{
// Directional light.
//
Surface_to_Light = normalize (-Light.Site.xyz);
Attenuation = 1.0; // No attenuation for directional lights.
}
else
{
// Point light.
//
vec3 Surface_to_Light_vector = Light.Site.xyz - surface_Site;
float Distance_to_Light = length (Surface_to_Light_vector);
Surface_to_Light = normalize (Surface_to_Light_vector);
Attenuation = 1.0
/ ( 1.0
+ Light.Attenuation
* pow (Distance_to_Light, 2));
// Cone restrictions which affects attenuation.
//
float Light_to_Surface_Angle = degrees (acos (dot (-Surface_to_Light,
normalize (Light.cone_Direction))));
if (Light_to_Surface_Angle > Light.cone_Angle)
{
Attenuation = 0.0;
}
}
vec3 lit_surface_Color = surface_Color * Light.Color;
vec3 Ambient = Light.ambient_Coefficient * lit_surface_Color;
float diffuse_Coefficient = max (0.0,
dot (Normal,
Surface_to_Light));
vec3 Diffuse = diffuse_Coefficient * lit_surface_Color;
float specular_Coefficient = 0.0;
if (diffuse_Coefficient > 0.0)
specular_Coefficient = pow (max (0.0,
dot (Surface_to_Camera,
reflect (-Surface_to_Light,
Normal))),
frag_Shine);
vec3 Specular = specular_Coefficient * specular_Color * Light.Color;
return Ambient + Attenuation * (Diffuse + Specular); // Linear color (before gamma correction).
}
void
main()
{
vec3 surface_Site = vec3 ( model_Transform
* vec4 (frag_Site, 1));
vec4 surface_Color = ( texture (Texture, frag_Coords)
+ frag_Color)
/ 2.0;
vec3 Surface_to_Camera = normalize (camera_Site - surface_Site);
vec3 Normal = normalize ( frag_Normal
* inverse_model_Rotation);
// Combine color from all the lights.
//
vec3 linear_Color = vec3 (0);
for (int i = 0; i < light_Count; ++i)
{
linear_Color += apply_Light (Lights [i],
surface_Color.rgb,
Normal,
surface_Site,
Surface_to_Camera);
}
vec3 Gamma = vec3 (1.0 / 2.2);
final_Color = vec4 (pow (linear_Color, // Final color (after gamma correction).
Gamma),
surface_Color.a);
}

View File

@@ -0,0 +1,114 @@
#version 140
uniform mat4 mvp_Transform;
uniform vec3 Scale;
uniform mat4 bone_Matrices[120];
in vec3 Site;
in vec3 Normal;
in vec4 Color;
in vec2 Coords;
in float Shine;
in vec4 bone_Ids;
in vec4 bone_Weights;
out vec3 frag_Site;
out vec3 frag_Normal;
out vec4 frag_Color;
out vec2 frag_Coords;
out float frag_Shine;
const float c_zero = 0.0;
const float c_one = 1.0;
void main()
{
vec4 transformedPosition = vec4 (0.0);
vec3 transformedNormal = vec3 (0.0);
if (int (bone_Ids.x) == 0) // No bones affect this vertex.
{
transformedPosition = vec4 (Site, c_one);
transformedNormal = Normal;
}
else
{
// Bone 1.
//
mat4 m44 = bone_Matrices [int (bone_Ids.x) - 1];
// Transform the offset by bone 1.
transformedPosition += m44 * vec4 (Site, c_one) * bone_Weights.x;
mat3 m33 = mat3 (m44[0].xyz,
m44[1].xyz,
m44[2].xyz);
// Transform the normal by bone 1.
transformedNormal += m33 * Normal * bone_Weights.x;
if (int (bone_Ids.y) != 0)
{
// Bone 2.
//
m44 = bone_Matrices [int (bone_Ids.y) - 1];
// Transform the offset by bone 2.
transformedPosition += m44 * vec4 (Site, c_one) * bone_Weights.y;
m33 = mat3 (m44[0].xyz,
m44[1].xyz,
m44[2].xyz);
// Transform the normal by bone 2.
transformedNormal += m33 * Normal * bone_Weights.y;
if (int (bone_Ids.z) != 0)
{
// Bone 3.
//
m44 = bone_Matrices [int (bone_Ids.z) - 1];
// Transform the offset by bone 3.
transformedPosition += m44 * vec4 (Site, c_one) * bone_Weights.z;
m33 = mat3(m44[0].xyz,
m44[1].xyz,
m44[2].xyz);
// Transform the normal by bone 3.
transformedNormal += m33 * Normal * bone_Weights.z;
if (int (bone_Ids.w) != 0)
{
// Bone 4.
//
m44 = bone_Matrices [int (bone_Ids.w) - 1];
// Transform the offset by bone 4.
transformedPosition += m44 * vec4 (Site, c_one) * bone_Weights.w;
m33 = mat3 (m44[0].xyz,
m44[1].xyz,
m44[2].xyz);
// Transform the normal by bone 4.
transformedNormal += m33 * Normal * bone_Weights.w;
}
}
}
}
// Pass some variables to the fragment shader.
//
frag_Site = Site;
frag_Normal = normalize (transformedNormal);
frag_Color = Color;
frag_Coords = Coords;
frag_Shine = Shine;
// Apply all matrix transformations to 'Site'.
//
gl_Position = mvp_Transform * (transformedPosition * vec4 (Scale, 1));
}

View File

@@ -0,0 +1,132 @@
#version 140
struct light
{
vec4 Site;
vec3 Color;
float Attenuation;
float ambient_Coefficient;
float cone_Angle;
vec3 cone_Direction;
};
uniform mat4 model_Transform;
uniform mat3 inverse_model_Rotation;
uniform vec3 camera_Site;
uniform vec3 specular_Color; // The materials specular color.
uniform sampler2D Texture;
uniform int light_Count;
uniform light Lights [10];
in vec3 frag_Site;
in vec3 frag_Normal;
in vec4 frag_Color;
in vec2 frag_Coords;
in float frag_Shine;
out vec4 final_Color;
vec3
apply_Light (light Light,
vec3 surface_Color,
vec3 Normal,
vec3 surface_Site,
vec3 Surface_to_Camera)
{
vec3 Surface_to_Light;
float Attenuation = 1.0;
if (Light.Site.w == 0.0)
{
// Directional light.
//
Surface_to_Light = normalize (-Light.Site.xyz);
Attenuation = 1.0; // No attenuation for directional lights.
}
else
{
// Difuse light.
//
vec3 Surface_to_Light_vector = Light.Site.xyz - surface_Site;
float Distance_to_Light = length (Surface_to_Light_vector);
Surface_to_Light = normalize (Surface_to_Light_vector);
Attenuation = 1.0
/ ( 1.0
+ Light.Attenuation
* pow (Distance_to_Light, 2));
// Cone restrictions which affects attenuation.
//
float Light_to_Surface_Angle = degrees (acos (dot (-Surface_to_Light,
normalize (Light.cone_Direction))));
if (Light_to_Surface_Angle > Light.cone_Angle)
{
Attenuation = 0.0;
}
}
vec3 lit_surface_Color = surface_Color * Light.Color;
vec3 Ambient = Light.ambient_Coefficient * lit_surface_Color;
float diffuse_Coefficient = max (0.0,
dot (Normal,
Surface_to_Light));
vec3 Diffuse = diffuse_Coefficient * lit_surface_Color;
float specular_Coefficient = 0.0;
if (diffuse_Coefficient > 0.0)
specular_Coefficient = pow (max (0.0,
dot (Surface_to_Camera,
reflect (-Surface_to_Light,
Normal))),
frag_Shine);
vec3 Specular = specular_Coefficient * specular_Color * Light.Color;
return Ambient + Attenuation * (Diffuse + Specular); // Linear color (before gamma correction).
}
void
main()
{
vec4 texture_Color = texture (Texture, frag_Coords);
vec4 surface_Color = vec4 (mix (texture_Color.rgb,
frag_Color .rgb,
0.5),
texture_Color.a
* frag_Color .a);
vec3 surface_Site = vec3 ( model_Transform
* vec4 (frag_Site, 1));
vec3 Surface_to_Camera = normalize (camera_Site - surface_Site);
vec3 Normal = normalize ( frag_Normal
* inverse_model_Rotation);
// Combine color from all the lights.
//
vec3 linear_Color = vec3 (0);
for (int i = 0; i < light_Count; ++i)
{
linear_Color += apply_Light (Lights [i],
surface_Color.rgb,
Normal,
surface_Site,
Surface_to_Camera);
}
vec3 Gamma = vec3 (1.0 / 2.2);
final_Color = vec4 (pow (linear_Color, // Final color (after gamma correction).
Gamma),
surface_Color.a);
}

View File

@@ -0,0 +1,126 @@
#version 140
struct light
{
vec4 Site;
vec3 Color;
float Attenuation;
float ambient_Coefficient;
float cone_Angle;
vec3 cone_Direction;
};
uniform mat4 model_Transform;
uniform mat3 inverse_model_Rotation;
uniform vec3 camera_Site;
uniform vec3 specular_Color; // The materials specular color.
uniform sampler2D Texture;
uniform int light_Count;
uniform light Lights [10];
in vec3 frag_Site;
in vec3 frag_Normal;
in vec4 frag_Color;
in vec2 frag_Coords;
in float frag_Shine;
out vec4 final_Color;
vec3
apply_Light (light Light,
vec3 surface_Color,
vec3 Normal,
vec3 surface_Site,
vec3 Surface_to_Camera)
{
vec3 Surface_to_Light;
float Attenuation = 1.0;
if (Light.Site.w == 0.0)
{
// Directional light.
//
Surface_to_Light = normalize (-Light.Site.xyz);
Attenuation = 1.0; // No attenuation for directional lights.
}
else
{
// Point light.
//
vec3 Surface_to_Light_vector = Light.Site.xyz - surface_Site;
float Distance_to_Light = length (Surface_to_Light_vector);
Surface_to_Light = normalize (Surface_to_Light_vector);
Attenuation = 1.0
/ ( 1.0
+ Light.Attenuation
* pow (Distance_to_Light, 2));
// Cone restrictions which affects attenuation.
//
float Light_to_Surface_Angle = degrees (acos (dot (-Surface_to_Light,
normalize (Light.cone_Direction))));
if (Light_to_Surface_Angle > Light.cone_Angle)
{
Attenuation = 0.0;
}
}
vec3 lit_surface_Color = surface_Color * Light.Color;
vec3 Ambient = Light.ambient_Coefficient * lit_surface_Color;
float diffuse_Coefficient = max (0.0,
dot (Normal,
Surface_to_Light));
vec3 Diffuse = diffuse_Coefficient * lit_surface_Color;
float specular_Coefficient = 0.0;
if (diffuse_Coefficient > 0.0)
specular_Coefficient = pow (max (0.0,
dot (Surface_to_Camera,
reflect (-Surface_to_Light,
Normal))),
frag_Shine);
vec3 Specular = specular_Coefficient * specular_Color * Light.Color;
return Ambient + Attenuation * (Diffuse + Specular); // Linear color (before gamma correction).
}
void
main()
{
vec3 surface_Site = vec3 ( model_Transform
* vec4 (frag_Site, 1));
vec4 surface_Color = mix (texture (Texture, frag_Coords),
frag_Color,
0.5);
vec3 Surface_to_Camera = normalize (camera_Site - surface_Site);
vec3 Normal = normalize (frag_Normal * inverse_model_Rotation);
// Combine color from all the lights.
//
vec3 linear_Color = vec3 (0);
for (int i = 0; i < light_Count; ++i)
{
linear_Color += apply_Light (Lights [i],
surface_Color.rgb,
Normal,
surface_Site,
Surface_to_Camera);
}
vec3 Gamma = vec3 (1.0 / 2.2);
final_Color = vec4 (pow (linear_Color, // Final color (after gamma correction).
Gamma),
surface_Color.a);
}

View File

@@ -0,0 +1,32 @@
#version 140
uniform mat4 mvp_Transform;
uniform vec3 Scale;
in vec3 Site;
in vec3 Normal;
in vec4 Color;
in vec2 Coords;
in float Shine;
out vec3 frag_Site;
out vec3 frag_Normal;
out vec4 frag_Color;
out vec2 frag_Coords;
out float frag_Shine;
void main()
{
// Pass some variables to the fragment shader.
//
frag_Site = Site;
frag_Normal = Normal;
frag_Color = Color;
frag_Coords = Coords;
frag_Shine = Shine;
// Apply all matrix transformations to 'Site'.
//
gl_Position = mvp_Transform * vec4 (Site * Scale, 1);
}

View File

@@ -0,0 +1,127 @@
#version 140
struct light
{
vec4 Site;
vec3 Color;
float Attenuation;
float ambient_Coefficient;
float cone_Angle;
vec3 cone_Direction;
};
uniform mat4 model_Transform;
uniform mat3 inverse_model_Rotation;
uniform vec3 camera_Site;
uniform vec3 specular_Color; // The materials specular color.
uniform sampler2D Texture;
uniform int light_Count;
uniform light Lights [10];
in vec3 frag_Site;
in vec3 frag_Normal;
in vec4 frag_Color;
in vec2 frag_Coords;
in float frag_Shine;
out vec4 final_Color;
vec3
apply_Light (light Light,
vec3 surface_Color,
vec3 Normal,
vec3 surface_Site,
vec3 Surface_to_Camera)
{
vec3 Surface_to_Light;
float Attenuation = 1.0;
if (Light.Site.w == 0.0)
{
// Directional light.
//
Surface_to_Light = normalize (-Light.Site.xyz);
Attenuation = 1.0; // No attenuation for directional lights.
}
else
{
// Point light.
//
vec3 Surface_to_Light_vector = Light.Site.xyz - surface_Site;
float Distance_to_Light = length (Surface_to_Light_vector);
Surface_to_Light = normalize (Surface_to_Light_vector);
Attenuation = 1.0
/ ( 1.0
+ Light.Attenuation
* pow (Distance_to_Light, 2));
// Cone restrictions which affects attenuation.
//
float Light_to_Surface_Angle = degrees (acos (dot (-Surface_to_Light,
normalize (Light.cone_Direction))));
if (Light_to_Surface_Angle > Light.cone_Angle)
{
Attenuation = 0.0;
}
}
vec3 lit_surface_Color = surface_Color * Light.Color;
vec3 Ambient = Light.ambient_Coefficient * lit_surface_Color;
float diffuse_Coefficient = max (0.0,
dot (Normal,
Surface_to_Light));
vec3 Diffuse = diffuse_Coefficient * lit_surface_Color;
float specular_Coefficient = 0.0;
if (diffuse_Coefficient > 0.0)
specular_Coefficient = pow (max (0.0,
dot (Surface_to_Camera,
reflect (-Surface_to_Light,
Normal))),
frag_Shine);
vec3 Specular = specular_Coefficient * specular_Color * Light.Color;
return Ambient + Attenuation * (Diffuse + Specular); // Linear color (before gamma correction).
}
void
main()
{
vec3 surface_Site = vec3 ( model_Transform
* vec4 (frag_Site, 1));
vec4 surface_Color = mix (texture (Texture, frag_Coords),
frag_Color,
0.5);
vec3 Surface_to_Camera = normalize (camera_Site - surface_Site);
vec3 Normal = normalize ( frag_Normal
* inverse_model_Rotation);
// Combine color from all the lights.
//
vec3 linear_Color = vec3 (0);
for (int i = 0; i < light_Count; ++i)
{
linear_Color += apply_Light (Lights [i],
surface_Color.rgb,
Normal,
surface_Site,
Surface_to_Camera);
}
vec3 Gamma = vec3 (1.0 / 2.2);
final_Color = vec4 (pow (linear_Color, // Final color (after gamma correction).
Gamma),
surface_Color.a);
}

View File

@@ -0,0 +1,114 @@
#version 140
uniform mat4 mvp_Transform;
uniform vec3 Scale;
uniform mat4 bone_Matrices[120];
in vec3 Site;
in vec3 Normal;
in vec4 Color;
in vec2 Coords;
in float Shine;
in vec4 bone_Ids;
in vec4 bone_Weights;
out vec3 frag_Site;
out vec3 frag_Normal;
out vec4 frag_Color;
out vec2 frag_Coords;
out float frag_Shine;
const float c_zero = 0.0;
const float c_one = 1.0;
void main()
{
vec4 transformedPosition = vec4 (0.0);
vec3 transformedNormal = vec3 (0.0);
if (int (bone_Ids.x) == 0) // No bones affect this vertex.
{
transformedPosition = vec4 (Site, c_one);
transformedNormal = Normal;
}
else
{
// Bone 1.
//
mat4 m44 = bone_Matrices [int (bone_Ids.x) - 1];
// Transform the offset by bone 1.
transformedPosition += m44 * vec4 (Site, c_one) * bone_Weights.x;
mat3 m33 = mat3 (m44[0].xyz,
m44[1].xyz,
m44[2].xyz);
// Transform the normal by bone 1.
transformedNormal += m33 * Normal * bone_Weights.x;
if (int (bone_Ids.y) != 0)
{
// Bone 2.
//
m44 = bone_Matrices [int (bone_Ids.y) - 1];
// Transform the offset by bone 2.
transformedPosition += m44 * vec4 (Site, c_one) * bone_Weights.y;
m33 = mat3 (m44[0].xyz,
m44[1].xyz,
m44[2].xyz);
// Transform the normal by bone 2.
transformedNormal += m33 * Normal * bone_Weights.y;
if (int (bone_Ids.z) != 0)
{
// Bone 3.
//
m44 = bone_Matrices [int (bone_Ids.z) - 1];
// Transform the offset by bone 3.
transformedPosition += m44 * vec4 (Site, c_one) * bone_Weights.z;
m33 = mat3(m44[0].xyz,
m44[1].xyz,
m44[2].xyz);
// Transform the normal by bone 3.
transformedNormal += m33 * Normal * bone_Weights.z;
if (int (bone_Ids.w) != 0)
{
// Bone 4.
//
m44 = bone_Matrices [int (bone_Ids.w) - 1];
// Transform the offset by bone 4.
transformedPosition += m44 * vec4 (Site, c_one) * bone_Weights.w;
m33 = mat3 (m44[0].xyz,
m44[1].xyz,
m44[2].xyz);
// Transform the normal by bone 4.
transformedNormal += m33 * Normal * bone_Weights.w;
}
}
}
}
// Pass some variables to the fragment shader.
//
frag_Site = Site;
frag_Normal = normalize (transformedNormal);
frag_Color = Color;
frag_Coords = Coords;
frag_Shine = Shine;
// Apply all matrix transformations to 'Site'.
//
gl_Position = mvp_Transform * (transformedPosition * vec4 (Scale, 1));
}

View File

@@ -0,0 +1,124 @@
#version 140
struct light
{
vec4 Site;
vec3 Color;
float Attenuation;
float ambient_Coefficient;
float cone_Angle;
vec3 cone_Direction;
};
uniform mat4 model_Transform;
uniform mat3 inverse_model_Rotation;
uniform vec3 camera_Site;
uniform vec3 specular_Color; // The materials specular color.
uniform sampler2D Texture;
uniform int light_Count;
uniform light Lights [10];
in vec3 frag_Site;
in vec3 frag_Normal;
in vec2 frag_Coords;
in float frag_Shine;
out vec4 final_Color;
vec3
apply_Light (light Light,
vec3 surface_Color,
vec3 Normal,
vec3 surface_Site,
vec3 Surface_to_Camera)
{
vec3 Surface_to_Light;
float Attenuation = 1.0;
if (Light.Site.w == 0.0)
{
// Directional light.
//
Surface_to_Light = normalize (-Light.Site.xyz);
Attenuation = 1.0; // No attenuation for directional lights.
}
else
{
// Point light.
//
vec3 Surface_to_Light_vector = Light.Site.xyz - surface_Site;
float Distance_to_Light = length (Surface_to_Light_vector);
Surface_to_Light = normalize (Surface_to_Light_vector);
Attenuation = 1.0
/ ( 1.0
+ Light.Attenuation
* pow (Distance_to_Light, 2));
// Cone restrictions which affects attenuation.
//
float Light_to_Surface_Angle = degrees (acos (dot (-Surface_to_Light,
normalize (Light.cone_Direction))));
if (Light_to_Surface_Angle > Light.cone_Angle)
{
Attenuation = 0.0;
}
}
vec3 lit_surface_Color = surface_Color * Light.Color;
vec3 Ambient = Light.ambient_Coefficient * lit_surface_Color;
float diffuse_Coefficient = max (0.0,
dot (Normal,
Surface_to_Light));
vec3 Diffuse = diffuse_Coefficient * lit_surface_Color;
float specular_Coefficient = 0.0;
if (diffuse_Coefficient > 0.0)
specular_Coefficient = pow (max (0.0,
dot (Surface_to_Camera,
reflect (-Surface_to_Light,
Normal))),
frag_Shine);
vec3 Specular = specular_Coefficient * specular_Color * Light.Color;
return Ambient + Attenuation * (Diffuse + Specular); // Linear color (before gamma correction).
}
void
main()
{
vec3 surface_Site = vec3 ( model_Transform
* vec4 (frag_Site, 1));
vec4 surface_Color = texture (Texture, frag_Coords);
vec3 Surface_to_Camera = normalize (camera_Site - surface_Site);
vec3 Normal = normalize ( frag_Normal
* inverse_model_Rotation);
// Combine color from all the lights.
//
vec3 linear_Color = vec3 (0);
for (int i = 0; i < light_Count; ++i)
{
linear_Color += apply_Light (Lights [i],
surface_Color.rgb,
Normal,
surface_Site,
Surface_to_Camera);
}
vec3 Gamma = vec3 (1.0 / 2.2);
final_Color = vec4 (pow (linear_Color, // Final color (after gamma correction).
Gamma),
surface_Color.a);
}

View File

@@ -0,0 +1,29 @@
#version 140
uniform mat4 mvp_Transform;
uniform vec3 Scale;
in vec3 Site;
in vec3 Normal;
in vec2 Coords;
in float Shine;
out vec3 frag_Site;
out vec3 frag_Normal;
out vec2 frag_Coords;
out float frag_Shine;
void main()
{
// Pass some variables to the fragment shader.
//
frag_Site = Site;
frag_Normal = Normal;
frag_Coords = Coords;
frag_Shine = Shine;
// Apply all matrix transformations to 'Site'.
//
gl_Position = mvp_Transform * vec4 (Site * Scale, 1);
}

View File

@@ -0,0 +1,124 @@
#version 140
struct light
{
vec4 Site;
vec3 Color;
float Attenuation;
float ambient_Coefficient;
float cone_Angle;
vec3 cone_Direction;
};
uniform mat4 model_Transform;
uniform mat3 inverse_model_Rotation;
uniform vec3 camera_Site;
uniform vec3 specular_Color; // The materials specular color.
uniform sampler2D Texture;
uniform int light_Count;
uniform light Lights [10];
in vec3 frag_Site;
in vec3 frag_Normal;
in vec2 frag_Coords;
in float frag_Shine;
out vec4 final_Color;
vec3
apply_Light (light Light,
vec3 surface_Color,
vec3 Normal,
vec3 surface_Site,
vec3 Surface_to_Camera)
{
vec3 Surface_to_Light;
float Attenuation = 1.0;
if (Light.Site.w == 0.0)
{
// Directional light.
//
Surface_to_Light = normalize (-Light.Site.xyz);
Attenuation = 1.0; // No attenuation for directional lights.
}
else
{
// Point light.
//
vec3 Surface_to_Light_vector = Light.Site.xyz - surface_Site;
float Distance_to_Light = length (Surface_to_Light_vector);
Surface_to_Light = normalize (Surface_to_Light_vector);
Attenuation = 1.0
/ ( 1.0
+ Light.Attenuation
* pow (Distance_to_Light, 2));
// Cone restrictions which affects attenuation.
//
float Light_to_Surface_Angle = degrees (acos (dot (-Surface_to_Light,
normalize (Light.cone_Direction))));
if (Light_to_Surface_Angle > Light.cone_Angle)
{
Attenuation = 0.0;
}
}
vec3 lit_surface_Color = surface_Color * Light.Color;
vec3 Ambient = Light.ambient_Coefficient * lit_surface_Color;
float diffuse_Coefficient = max (0.0,
dot (Normal,
Surface_to_Light));
vec3 Diffuse = diffuse_Coefficient * lit_surface_Color;
float specular_Coefficient = 0.0;
if (diffuse_Coefficient > 0.0)
specular_Coefficient = pow (max (0.0,
dot (Surface_to_Camera,
reflect (-Surface_to_Light,
Normal))),
frag_Shine);
vec3 Specular = specular_Coefficient * specular_Color * Light.Color;
return Ambient + Attenuation * (Diffuse + Specular); // Linear color (before gamma correction).
}
void
main()
{
vec3 surface_Site = vec3 ( model_Transform
* vec4 (frag_Site, 1));
vec4 surface_Color = texture (Texture, frag_Coords);
vec3 Surface_to_Camera = normalize (camera_Site - surface_Site);
vec3 Normal = normalize ( frag_Normal
* inverse_model_Rotation);
// Combine color from all the lights.
//
vec3 linear_Color = vec3 (0);
for (int i = 0; i < light_Count; ++i)
{
linear_Color += apply_Light (Lights [i],
surface_Color.rgb,
Normal,
surface_Site,
Surface_to_Camera);
}
vec3 Gamma = vec3 (1.0 / 2.2);
final_Color = vec4 (pow (linear_Color, // Final color (after gamma correction).
Gamma),
surface_Color.a);
}

View File

@@ -0,0 +1,116 @@
#version 140
uniform mat4 mvp_Transform;
uniform vec3 Scale;
uniform mat4 bone_Matrices[120];
in vec3 Site;
in vec3 Normal;
in vec2 Coords;
in float Shine;
in vec4 bone_Ids;
in vec4 bone_Weights;
out vec3 frag_Site;
out vec3 frag_Normal;
out vec2 frag_Coords;
out float frag_Shine;
const float c_zero = 0.0;
const float c_one = 1.0;
void main()
{
vec4 transformedPosition = vec4 (0.0);
vec3 transformedNormal = vec3 (0.0);
if (int (bone_Ids.x) == 0) // No bones affect this vertex.
{
transformedPosition = vec4 (Site, c_one);
transformedNormal = Normal;
}
else
{
// Bone 1.
//
mat4 m44 = bone_Matrices [int (bone_Ids.x) - 1];
// Transform the offset by bone 1.
transformedPosition += m44 * vec4 (Site, c_one) * bone_Weights.x;
mat3 m33 = mat3 (m44[0].xyz,
m44[1].xyz,
m44[2].xyz);
// Transform the normal by bone 1.
transformedNormal += m33 * Normal * bone_Weights.x;
if (int(bone_Ids.y) != 0)
{
// Bone 2.
//
m44 = bone_Matrices [int (bone_Ids.y) - 1];
// Transform the offset by bone 2.
transformedPosition += m44 * vec4 (Site, c_one) * bone_Weights.y;
m33 = mat3 (m44[0].xyz,
m44[1].xyz,
m44[2].xyz);
// Transform the normal by bone 2.
transformedNormal += m33 * Normal * bone_Weights.y;
if (int (bone_Ids.z) != 0)
{
// Bone 3.
//
m44 = bone_Matrices [int (bone_Ids.z) - 1];
// Transform the offset by bone 3.
transformedPosition += m44 * vec4 (Site, c_one) * bone_Weights.z;
m33 = mat3 (m44[0].xyz,
m44[1].xyz,
m44[2].xyz);
// Transform the normal by bone 3.
transformedNormal += m33 * Normal * bone_Weights.z;
if (int (bone_Ids.w) != 0)
{
// Bone 4.
//
m44 = bone_Matrices [int (bone_Ids.w) - 1];
// Transform the offset by bone 4.
transformedPosition += m44 * vec4 (Site, c_one) * bone_Weights.w;
m33 = mat3 (m44[0].xyz,
m44[1].xyz,
m44[2].xyz);
// Transform the normal by bone 4.
transformedNormal += m33 * Normal * bone_Weights.w;
}
}
}
}
// Pass some variables to the fragment shader.
//
frag_Site = transformedPosition.xyz * Scale;
frag_Normal = normalize (transformedNormal);
frag_Coords = Coords;
frag_Shine = Shine;
// Apply all matrix transformations to 'Site'.
//
gl_Position = mvp_Transform * transformedPosition;
gl_Position = mvp_Transform * (transformedPosition * vec4 (Scale, 1));
}

View File

@@ -0,0 +1,69 @@
#version 120
struct directional_light
{
vec3 direction; // Normalized light direction in eye space.
vec3 halfplane; // Normalized half-plane vector.
vec4 ambient_color;
vec4 diffuse_color;
vec4 specular_color;
bool is_on;
};
uniform mat3 inv_modelview_Matrix;
uniform directional_light uLights [8];
uniform float uShine;
attribute vec3 aNormal;
attribute vec4 aColor;
varying vec4 vColor;
const float c_zero = 0.0;
const float c_one = 1.0;
vec4 // Returns the computed color.
directional_light_color (in vec3 normal, // 'normal' has been transformed into eye space and normalized.
in directional_light light)
{
if (!light.is_on)
return vec4 (0.0, 0.0, 0.0, 0.0);
vec4 computed_color = vec4 (c_zero, c_zero, c_zero, c_zero);
float NdotL; // Dot product of normal and light direction.
float NdotH; // Dot product of normal and half-plane vector.
NdotL = max (c_zero, dot (normal, light.direction));
NdotH = max (c_zero, dot (normal, light.halfplane));
computed_color += ( light.ambient_color * aColor);
computed_color += (NdotL * light.diffuse_color * aColor);
if (NdotH > c_zero)
computed_color += (pow (NdotH, uShine) * aColor * light.specular_color);
return computed_color;
}
void main()
{
vec3 light_Normal = normalize (aNormal) * inv_modelview_Matrix;
vColor = vec4 (0.0, 0.0, 0.0, 0.0);
for (int i = 0; i < 8; i++)
{
vColor += directional_light_color (light_Normal, uLights [i]);
}
}

View File

@@ -0,0 +1,12 @@
#version 140
uniform sampler2D sTexture;
varying vec4 vColor;
varying vec2 vCoords;
void main()
{
gl_FragColor = texture2D (sTexture, vCoords) * vColor; // Modulate light color with texture.
}

View File

@@ -0,0 +1,25 @@
#version 140
uniform mat4 mvp_Transform;
uniform vec3 Scale;
attribute vec3 Site;
attribute vec2 Coords;
varying vec4 vColor;
varying vec2 vCoords;
const float c_zero = 0.0;
const float c_one = 1.0;
void main()
{
gl_Position = mvp_Transform * vec4 (Site * Scale, 1.0);
vColor = vec4 (1.0, 1.0, 1.0, 1.0);
vCoords = Coords;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

View File

@@ -0,0 +1,18 @@
with
"gel",
"lace_shared";
project full_Demo
is
for Object_Dir use "build";
for Exec_Dir use ".";
for Main use ("launch_full_demo.adb");
for Languages use ("Ada");
package Ide renames Lace_shared.Ide;
package Builder renames Lace_shared.Builder;
package Compiler renames Lace_shared.Compiler;
package Binder renames Lace_shared.Binder;
end full_Demo;

View File

@@ -0,0 +1,304 @@
with
gel.Window.setup,
gel.Applet.gui_and_sim_world,
gel.Forge,
gel.Sprite,
physics.Model,
openGL.Model.box .colored,
openGL.Model.sphere .textured,
openGL.Model.capsule.textured,
openGL.Model.any,
openGL.Model.terrain,
openGL.IO,
openGL.Light,
openGL.Palette;
pragma unreferenced (gel.Window.setup);
procedure launch_full_Demo
--
-- Drops a variety of shapes onto a terrain.
--
is
use gel.Math,
openGL,
openGL.Model.box,
opengl.Palette;
the_Applet : constant gel.Applet.gui_and_sim_world.view := gel.Forge.new_gui_and_sim_Applet ("mixed Shapes", 1536, 864);
text_line_Site : gel.Math.Vector_3 := (-10.0, 50.0, -60.0);
procedure put_Line (Message : in String)
is
Text : constant gel.Sprite.view := gel.Forge.new_text_Sprite (the_Applet.gui_World,
text_line_Site,
Message,
the_Applet.Font,
White);
begin
the_Applet.gui_World.add (Text);
text_line_Site (2) := text_line_Site (2) - 2.0;
end put_Line;
x : math.Real := 0.0;
y : math.Real := 10.0;
-----------
-- Terrain
--
-- Heightfield
--
function to_Heightfield (From : in openGL.height_Map) return physics.Heightfield
is
Result : physics.Heightfield (1 .. Integer (From'Last (1)),
1 .. Integer (From'Last (2)));
Last_i : constant Index_t := From'Last (1);
begin
for i in Result'Range (1)
loop
for j in Result'Range (1)
loop
Result (i, j) := math.Real (From (Last_i - Index_t (i) + 1,
Index_t (j)));
end loop;
end loop;
return Result;
end to_Heightfield;
terrain_Heights : constant openGL.asset_Name := to_Asset ("assets/gel/kidwelly-terrain.png");
terrain_Texture : constant openGL.asset_Name := to_Asset ("assets/gel/kidwelly-terrain-texture.png");
hs : constant := 1.0;
gl_Heights : constant openGL.IO.height_Map_view := openGL.IO.to_height_Map (image_Filename => terrain_Heights,
Scale => 10.0);
the_terrain_Model : constant openGL.Model.terrain.view
:= openGL.Model.terrain.new_Terrain (heights_Asset => terrain_Heights,
Row => 1,
Col => 1,
Heights => openGL.Model.terrain.height_Map_view (gl_Heights),
color_Map => terrain_Texture,
Tiling => (s => (0.0, 1.0),
t => (0.0, 1.0)));
the_terrain_physics_Model : constant physics.Model.view
:= physics.Model.forge.new_physics_Model (shape_Info => (Kind => physics.Model.heightfield,
Heights => new physics.Heightfield' (to_Heightfield (gl_Heights.all)),
height_Range => (0.0, 200.0)),
Scale => (hs, 1.0, hs));
the_Terrain : constant gel.Sprite.view
:= gel.Sprite.forge.new_Sprite ("demo.Terrain",
the_Applet.gui_World.all'Access,
Origin_3D,
the_terrain_Model,
the_terrain_physics_Model);
begin
-- Setup the applet.
--
the_Applet.gui_Camera.Site_is ((0.0, 4.0, 30.0)); -- Position the camera.
the_Applet.sim_Camera.Site_is ((0.0, 4.0, 30.0)); -- Position the camera.
the_Applet.enable_simple_Dolly (in_World => the_Applet.sim_World.Id); -- Enable user camera control via keyboard.
the_Applet.Dolly.Speed_is (0.1);
the_Applet.Renderer.Background_is (sky_Blue);
the_Applet.sim_World.Gravity_is ((0.0, -9.8, 0.0));
-- Camera controls text.
--
put_Line ("Camera Controls: - Use arrow and PgUp/PgDn keys to move.");
put_Line (" - Use Shift key to move faster.");
put_Line (" - Use Ctrl key to rotate instead of move.");
put_Line (" - Use Alt key to orbit instead of move.");
-- Set the lights position.
--
declare
use openGL.Light;
Light : openGL.Light.item := the_Applet.Renderer.new_Light;
begin
Light.Kind_is (Diffuse);
Light.Site_is ((0.0, 100.0, 100.0));
Light.ambient_Coefficient_is (0.2);
the_Applet.Renderer.set (Light);
end;
-- Terrain.
--
the_Applet.sim_World.add (the_Terrain); -- Add the terrain.
-- Add several sprites of each shape.
--
for i in 1 .. 5
loop
declare
-- Box
--
the_box_Model : constant openGL.Model.box.colored.view
:= openGL.Model.box.colored.new_Box (Size => (1.0, 1.0, 1.0),
Faces => (Front => (Colors => (others => (Red, Opaque))),
Rear => (Colors => (others => (Green, Opaque))),
Upper => (Colors => (others => (Violet, Opaque))),
Lower => (Colors => (others => (Yellow, Opaque))),
Left => (Colors => (others => (Cyan, Opaque))),
Right => (Colors => (others => (Magenta, Opaque)))));
the_box_physics_Model : constant physics.Model.view
:= physics.Model.forge.new_physics_Model (shape_Info => (Kind => physics.Model.Cube,
half_Extents => the_box_Model.Size / 2.0),
Mass => 1.0);
the_Box : constant gel.Sprite.view
:= gel.Sprite.forge.new_Sprite ("demo.Box",
the_Applet.gui_World.all'Access,
Origin_3D,
the_box_Model.all'Access,
the_box_physics_Model);
-- Ball
--
the_ball_physics_Model : constant physics.Model.view
:= physics.Model.forge.new_physics_Model (shape_Info => (Kind => physics.Model.a_sphere,
sphere_Radius => 0.5),
Mass => 1.0);
the_ball_Model : constant openGL.Model.sphere.textured.view
:= openGL.Model.sphere.textured.new_Sphere (Radius => 0.5,
Image => openGL.to_Asset ("assets/gel/texture/earth_map.bmp"));
the_Ball : constant gel.Sprite.view
:= gel.Sprite.forge.new_Sprite ("demo.Ball",
the_Applet.gui_World.all'Access,
Origin_3D,
the_ball_Model,
the_ball_physics_Model);
-- Cone
--
the_cone_Model : constant openGL.Model.any.view
:= openGL.Model.any.new_Model (Model => openGL.to_Asset ("assets/gel/model/unit_cone.obj"),
Texture => openGL.to_Asset ("assets/gel/Face1.bmp"),
Texture_is_lucid => False);
the_cone_physics_Model : constant physics.Model.view
:= physics.Model.forge.new_physics_Model (shape_Info => (Kind => physics.Model.cone),
Mass => 1.0);
the_Cone : constant gel.Sprite.view
:= gel.Sprite.forge.new_Sprite ("demo.Cone",
the_Applet.gui_World.all'Access,
Origin_3D,
the_cone_Model.all'Access,
the_cone_physics_Model);
-- Capsule
--
the_capsule_Model : constant openGL.Model.capsule.textured.view
:= openGL.Model.capsule.textured.new_Capsule (Radius => 0.5,
Height => 1.0,
Image => openGL.to_Asset ("assets/gel/Face1.bmp"));
the_capsule_physics_Model : constant physics.Model.view
:= physics.Model.forge.new_physics_Model (shape_Info => (Kind => physics.Model.a_Capsule,
lower_Radius => 0.5,
upper_Radius => 0.5,
Height => 1.0),
Mass => 1.0);
the_Capsule : constant gel.Sprite.view
:= gel.Sprite.forge.new_Sprite ("demo.Capsule",
the_Applet.gui_World.all'Access,
Origin_3D,
the_capsule_Model.all'Access,
the_capsule_physics_Model);
-- multi_Sphere
--
the_multi_Sphere_Model : constant openGL.Model.capsule.textured.view
:= openGL.Model.capsule.textured.new_Capsule (Radius => 0.5,
Height => 0.0,
Image => openGL.to_Asset ("assets/gel/golf_green-16x16.tga"));
the_multi_Sphere_physics_Model : constant physics.Model.view
:= physics.Model.forge.new_physics_Model (shape_Info => (Kind => physics.Model.multi_Sphere,
Sites => new physics.Vector_3_array' ((-0.5, 0.0, 0.0),
( 0.5, 0.0, 0.0)),
Radii => new gel.math.Vector' (1 => 0.5,
2 => 0.5)),
Mass => 1.0);
the_multi_Sphere : constant gel.Sprite.view
:= gel.Sprite.forge.new_Sprite ("demo.multi_Sphere",
the_Applet.gui_World.all'Access,
Origin_3D,
the_multi_Sphere_Model.all'Access,
the_multi_Sphere_physics_Model);
-- Hull
--
s : constant := 0.5;
the_hull_Model : constant openGL.Model.box.colored.view
:= openGL.Model.box.colored.new_Box (Size => (s * 2.0, s * 2.0, s * 2.0),
Faces => (others => (others => (others => (Palette.random_Color, Opaque)))));
the_hull_physics_Model : constant physics.Model.view
:= physics.Model.forge.new_physics_Model (shape_Info => (Kind => physics.Model.hull,
Points => new physics.Vector_3_array' ((-s, -s, s),
( s, -s, s),
( s, s, s),
(-s, s, s),
(-s, -s, -s),
( s, -s, -s),
( s, s, -s),
(-s, s, -s))),
Mass => 1.0);
the_Hull : constant gel.Sprite.view
:= gel.Sprite.forge.new_Sprite ("demo.Hull",
the_Applet.gui_World.all'Access,
Origin_3D,
the_hull_Model.all'Access,
the_hull_physics_Model);
begin
the_Applet.sim_World.add (the_Ball);
the_Applet.sim_World.add (the_Box);
the_Applet.sim_World.add (the_Cone);
the_Applet.sim_World.add (the_Capsule);
the_Applet.sim_World.add (the_multi_Sphere);
the_Applet.sim_World.add (the_Hull);
the_Ball .Site_is (( x, y, 0.0));
the_Box .Site_is (( 0.0, y, -2.5));
the_Cone .Site_is (( 0.0, y, 0.0));
the_Capsule .Site_is (( 0.0 + X, y, 0.0 + x));
the_multi_Sphere.Site_is ((-4.0, y, 4.4));
the_Hull .Site_is (( 4.0, y, 4.4));
x := x + 2.0;
y := y + 2.0;
end;
end loop;
-- Main loop.
--
while the_Applet.is_open
loop
the_Applet.freshen; -- Handle any new events, evolve physics and update the screen.
end loop;
the_Applet.destroy;
end launch_full_Demo;

View File

@@ -0,0 +1,75 @@
#include <box2d/box2d.h>
#include <stdio.h>
int main(int argc, char** argv)
{
B2_NOT_USED(argc);
B2_NOT_USED(argv);
// Construct a world object, which will hold and simulate the rigid bodies.
b2World world (b2Vec2 (0.0f, 0.0f)); // Does not bounce.
// b2World world (b2Vec2 (0.0f, 0.017f)); // Bounces.
// Define the dynamic ball body. We set its position and call the body factory.
b2BodyDef bodyDef;
bodyDef.type = b2_dynamicBody;
bodyDef.position.Set(0.0f, 0.0f);
b2Body* body = world.CreateBody(&bodyDef);
// Define a ball shape for our dynamic body.
b2CircleShape Ball;
Ball.m_radius = 0.5f;
// Define the dynamic body fixture.
b2FixtureDef fixtureDef;
fixtureDef.shape = &Ball;
fixtureDef.density = 1.0f;
fixtureDef.friction = 0.0f;
fixtureDef.restitution = 1.0f;
// Add the shape to the body.
body->CreateFixture(&fixtureDef);
// Define the statoc box body.
float stadium_Width = 300.0;
float stadium_Height = 10.0;
float Thickness = 2.0;
float top_wall_Y_Offset = stadium_Height + (Thickness / 2.0);
// Define the ground box shape.
b2PolygonShape groundBox;
groundBox.SetAsBox(stadium_Width, Thickness);
b2BodyDef groundBodyDef;
groundBodyDef.type = b2_staticBody;
groundBodyDef.position.Set (0.0f, top_wall_Y_Offset);
b2Body* groundBody = world.CreateBody(&groundBodyDef);
b2FixtureDef GfixtureDef;
GfixtureDef.shape = &groundBox;
GfixtureDef.density = 0.0f;
GfixtureDef.friction = 0.0f;
GfixtureDef.restitution = 1.0f;
groundBody->CreateFixture(&GfixtureDef);
body->ApplyForceToCenter(b2Vec2 (45.0, 40.0), 1);
float timeStep = 1.0f / 60.0f;
int32 velocityIterations = 6;
int32 positionIterations = 2;
for (int32 i = 0; i < 700; ++i)
{
world.Step(timeStep, velocityIterations, positionIterations);
b2Vec2 position = body->GetPosition();
float angle = body->GetAngle();
printf("%d %4.2f %4.2f %4.2f\n", i, position.x, position.y, angle);
}
return 0;
}

View File

@@ -0,0 +1,31 @@
with
"box2d_contrib";
project gel_box2d_Test
is
for Source_Dirs use (".");
for Object_Dir use "obj";
for Exec_Dir use ".";
for Main use ("box2d_HelloWorld.cpp");
for Languages use ("C++");
package Naming is
for Spec_Suffix ("C++") use ".h";
for Body_Suffix ("C++") use ".cpp";
end Naming;
package Compiler is
for Default_Switches ("c++") use ("-g",
"-Wno-return-type-c-linkage",
"-I../../../c_math/source/c",
"-I" & External ("LACE") & "/3-mid/physics/implement/c_math/source/c",
"-I" & External ("LACE") & "/3-mid/physics/implement/box2d/contrib/include",
"-I../contrib/box2d-2.4.1/include");
end Compiler;
package Linker is
for Switches ("c++") use ("-lbox2d");
end Linker;
end gel_box2d_Test;

View File

@@ -0,0 +1,303 @@
with
gel.Window.setup,
gel.Applet.gui_world,
gel.Forge,
gel.Sprite,
gel.World,
gel.Camera,
gel.Keyboard,
Physics,
openGL.Palette,
openGL.Model.text,
float_Math.Random,
lace.Event,
lace.Response,
lace.Event.utility,
Ada.Text_IO,
Ada.Exceptions;
pragma Unreferenced (gel.Window.setup);
procedure launch_Pong
--
-- Basic pong game.
--
is
use gel.Applet,
gel.Applet.gui_world,
gel.Keyboard,
gel.Math,
openGL.Palette,
Ada.Text_IO;
stadium_Width : constant := 30.0;
stadium_Height : constant := 20.0;
--- Applet
--
the_Applet : gel.Applet.gui_world.view
:= gel.Forge.new_gui_Applet (Named => "Pong",
window_Width => 800,
window_Height => 600,
space_Kind => physics.Box2d);
--- Ball
--
the_Ball : constant gel.Sprite.view
:= gel.Forge.new_circle_Sprite (in_World => the_Applet.World,
Site => [0.0, 0.0],
Mass => 1.0,
Bounce => 1.0,
Friction => 0.0,
Radius => 0.5,
Color => White,
Texture => openGL.to_Asset ("assets/opengl/texture/Face1.bmp"));
--- Players
--
type Player is
record
Paddle : gel.Sprite.view;
moving_Up : Boolean := False;
moving_Down : Boolean := False;
Score : Natural := 0;
score_Text : gel.Sprite.view;
score_Model : openGL.Model.text.view;
end record;
type player_Id is range 1 .. 2;
type Players is array (player_Id) of Player;
the_Players : Players;
procedure add_Player (Id : in player_Id;
Site : in Vector_2)
is
the_Player : Player renames the_Players (Id);
score_Site : constant Vector_2 := Site + [0.0, stadium_Height / 2.0 + 0.8];
begin
the_Player.Paddle := gel.Forge.new_rectangle_Sprite (the_Applet.World,
Site => Site,
Mass => 0.0,
Bounce => 1.0,
Friction => 0.0,
Width => 0.7,
Height => 3.0,
Color => Red);
the_Player.score_Text := gel.Forge.new_text_Sprite (the_Applet.World,
Origin_3D,
" 0",
the_Applet.Font,
Green);
the_Player.score_Model := openGL.Model.text.view (the_Player.score_Text.graphics_Model);
the_Applet.World.add (the_Player.Paddle);
the_Applet.World.add (the_Player.score_Text);
the_Player.score_Text.Site_is (Vector_3 (score_Site & 0.0));
end add_Player;
--- Walls
--
procedure add_Wall (Site : in Vector_2;
Width,
Height : in Real)
is
the_Wall : constant gel.Sprite.view
:= gel.Forge.new_rectangle_Sprite (the_Applet.World,
Site => Site,
Mass => 0.0,
Bounce => 1.0,
Friction => 0.0,
Width => Width,
Height => Height,
Color => Blue);
begin
the_Applet.World.add (the_Wall);
end add_Wall;
--- Controls
--
relaunch_Ball : Boolean := True;
Cycle : Natural := 0;
--- Events
--
type key_press_Response is new lace.Response.item with null record;
overriding
procedure respond (Self : in out key_press_Response; to_Event : in lace.Event.item'Class)
is
pragma Unreferenced (Self);
the_Event : gel.Keyboard.key_press_Event renames gel.Keyboard.key_press_Event (to_Event);
the_Key : constant gel.keyboard.Key := the_Event.modified_Key.Key;
begin
case the_Key
is
when up => the_Players (2).moving_Up := True;
when down => the_Players (2).moving_Down := True;
when a => the_Players (1).moving_Up := True;
when z => the_Players (1).moving_Down := True;
when SPACE => relaunch_Ball := True;
when others => null;
end case;
end respond;
type key_release_Response is new lace.Response.item with null record;
overriding
procedure respond (Self : in out key_release_Response; to_Event : in lace.Event.item'Class)
is
pragma Unreferenced (Self);
the_Event : gel.Keyboard.key_release_Event renames gel.Keyboard.key_release_Event (to_Event);
the_Key : constant gel.keyboard.Key := the_Event.modified_Key.Key;
begin
case the_Key
is
when up => the_Players (2).moving_Up := False;
when down => the_Players (2).moving_Down := False;
when a => the_Players (1).moving_Up := False;
when z => the_Players (1).moving_Down := False;
when others => null;
end case;
end respond;
the_key_press_Response : aliased key_press_Response;
the_key_release_Response : aliased key_release_Response;
use lace.Event.Utility;
begin
the_Applet.Camera.Site_is ([0.0, 0.0, 20.0]);
the_Applet.World.Gravity_is ([0.0, 0.0, 0.0]);
the_Applet.World.add (the_Ball);
--- Add the players.
--
declare
paddle_X_Offset : constant := stadium_Width / 2.0 - 2.0;
begin
add_Player (1, Site => [-paddle_X_Offset, 0.0]);
add_Player (2, Site => [ paddle_X_Offset, 0.0]);
end;
--- Build the stadium.
--
declare
Thickness : constant := 1.0; -- Thickness of the walls.
goal_Size : constant := 6.0;
side_wall_Height : constant := (stadium_Height - goal_Size) / 2.0;
top_wall_Y_Offset : constant := (stadium_Height - Thickness) / 2.0;
side_wall_X_Offset : constant := stadium_Width / 2.0;
side_wall_Y_Offset : constant := (side_wall_Height + goal_Size) / 2.0;
begin
add_Wall (Site => [0.0, top_wall_Y_Offset], Width => stadium_Width, Height => Thickness); -- Top
add_Wall (Site => [0.0, -top_wall_Y_Offset], Width => stadium_Width, Height => Thickness); -- Bottom
add_Wall (Site => [-side_wall_X_Offset, side_wall_Y_Offset], Width => Thickness, Height => side_wall_Height); -- upper Left
add_Wall (Site => [-side_wall_X_Offset, -side_wall_Y_Offset], Width => Thickness, Height => side_wall_Height); -- lower Left
add_Wall (Site => [ side_wall_X_Offset, side_wall_Y_Offset], Width => Thickness, Height => side_wall_Height); -- upper Right
add_Wall (Site => [ side_wall_X_Offset, -side_wall_Y_Offset], Width => Thickness, Height => side_wall_Height); -- lower Right
end;
-- Connect events.
--
connect ( the_Applet.local_Observer,
the_Applet.Keyboard.all'Access,
the_key_press_Response'unchecked_Access,
+gel.Keyboard.key_press_Event'Tag);
connect ( the_Applet.local_Observer,
the_Applet.Keyboard.all'Access,
the_key_release_Response'unchecked_Access,
+gel.Keyboard.key_release_Event'Tag);
--- Main loop.
--
while the_Applet.is_open
loop
Cycle := Cycle + 1;
the_Applet.World.evolve; -- Advance the world.
the_Applet.freshen; -- Handle any new events and update the screen.
--- Check goal scoring.
--
declare
procedure award_Goal (Id : in player_Id)
is
the_Player : Player renames the_Players (Id);
new_Score : constant String := Natural'Image (the_Player.Score + 1);
begin
relaunch_Ball := True;
the_Player.Score := the_Player.Score + 1;
the_Player.score_Model.Text_is (new_Score);
the_Ball.Site_is (Origin_3d);
the_Ball.Speed_is ([0.0, 0.0, 0.0]);
end award_Goal;
goal_X_Boundary : constant := stadium_Width / 2.0 + 1.0;
begin
if the_Ball.Site (1) > goal_X_Boundary then award_Goal (Id => 1);
elsif the_Ball.Site (1) < -goal_X_Boundary then award_Goal (Id => 2);
end if;
end;
if relaunch_Ball
then
the_Ball.Site_is ([0.0, 0.0, 0.0]);
declare
the_Force : Vector_3 := [gel.Math.Random.random_Real (50.0, 200.0),
gel.Math.Random.random_Real ( 5.0, 20.0),
0.0];
begin
if gel.Math.Random.random_Boolean
then
the_Force := -the_Force;
end if;
the_Ball.apply_Force (the_Force);
end;
relaunch_Ball := False;
end if;
--- Move the paddles.
--
for the_Player of the_Players
loop
declare
paddle_Speed : constant Vector_3 := [0.0, 0.2, 0.0];
begin
if the_Player.moving_Up then the_Player.Paddle.Site_is (the_Player.Paddle.Site + paddle_Speed); end if;
if the_Player.moving_Down then the_Player.Paddle.Site_is (the_Player.Paddle.Site - paddle_Speed); end if;
end;
end loop;
end loop;
free (the_Applet);
exception
when E : others =>
new_Line;
put_Line ("Unhandled exception in main task !");
put_Line (Ada.Exceptions.Exception_Information (E));
new_Line;
end launch_Pong;

View File

@@ -0,0 +1,17 @@
with
"gel",
"lace_shared";
project Pong
is
for Object_Dir use "build";
for Exec_Dir use ".";
for Main use ("launch_pong.adb");
for Languages use ("Ada");
package Ide renames Lace_shared.Ide;
package Builder renames Lace_shared.Builder;
package Compiler renames Lace_shared.Compiler;
package Binder renames Lace_shared.Binder;
end Pong;

View File

@@ -0,0 +1,21 @@
with
"gel",
"lace_shared";
project Hello_SDL_GEL
is
for Object_Dir use "build";
for Exec_Dir use ".";
for Main use ("launch_hello_gel.adb");
for Languages use ("Ada");
package Ide renames Lace_shared.Ide;
package Builder renames Lace_shared.Builder;
package Compiler renames Lace_shared.Compiler;
package Binder renames Lace_shared.Binder;
package Linker is
for Default_Switches ("ada") use ("-lGL");
end Linker;
end Hello_SDL_GEL;

View File

@@ -0,0 +1,35 @@
with
gel.Applet.gui_world,
gel.Forge,
gel.Window.setup,
ada.Text_IO,
ada.Exceptions;
pragma unreferenced (gel.Window.setup);
procedure launch_hello_GEL
--
-- Opens a GEL window.
--
is
use gel.Applet.gui_world,
ada.Text_IO;
the_Applet : gel.Applet.gui_World.view := gel.Forge.new_gui_Applet ("Hello GEL");
begin
while the_Applet.is_open
loop
the_Applet.gui_World.evolve; -- Evolve the world.
the_Applet.freshen; -- Handle any new events and update the screen.
end loop;
free (the_Applet);
exception
when E : others =>
put_Line ("Exception in Environment task");
put_Line (ada.Exceptions.Exception_Information (E));
end launch_hello_GEL;

View File

@@ -0,0 +1,12 @@
# Blender MTL File: 'None'
# Material Count: 1
newmtl oolite_cobra3_auv
Ns 225.000000
Ka 1.000000 1.000000 1.000000
Kd 0.800000 0.800000 0.800000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.450000
d 1.000000
illum 2

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,119 @@
with
gel.Applet.gui_World,
gel.Window.setup,
gel.Camera,
gel.Forge,
gel.Sprite,
physics.Model,
openGL.Model.any,
openGL.Light,
ada.Calendar,
ada.Text_IO,
ada.Exceptions;
pragma Unreferenced (gel.Window.setup);
procedure launch_opengl_Model
--
-- Shows a human head model imported from a wavefront '.obj' file
-- and a human body model imported from a collada '.dae' file.
--
--
is
use ada.Calendar,
ada.Text_IO,
ada.Exceptions;
the_Applet : constant gel.Applet.gui_World.view := gel.Forge.new_gui_Applet ("openGL Model", 500, 500);
the_human_graphics_Model : constant openGL.Model.any.view
:= openGL.Model.any.new_Model (Model => openGL.to_Asset ("./assets/opengl/model/human.obj"),
Texture => openGL.null_Asset,
Texture_is_lucid => False);
the_human_physics_Model : constant physics.Model.view
:= physics.Model.Forge.new_physics_Model (shape_Info => (Kind => physics.Model.Cube,
half_Extents => [4.0, 1.0, 2.0]),
Mass => 1.0);
the_Human : constant gel.Sprite.view
:= gel.Sprite.forge.new_Sprite (Name => "Clarence",
World => the_Applet.gui_World.all'Access,
at_Site => gel.Math.Origin_3D,
graphics_Model => the_human_graphics_Model,
physics_Model => the_human_physics_Model);
the_cobra_graphics_Model : aliased constant openGL.Model.any.view
:= openGL.Model.any.new_Model (Model => openGL.to_Asset ("./assets/oolite_cobra3.obj"),
Texture => openGL.to_Asset ("./assets/oolite_cobra3_diffuse.png"),
Texture_is_lucid => False);
the_cobra_physics_Model : constant physics.Model.view
:= physics.Model.Forge.new_physics_Model (shape_Info => (Kind => physics.Model.Cube,
half_Extents => [4.0, 1.0, 2.0]),
Mass => 0.0);
the_Cobra : constant gel.Sprite.view
:= gel.Sprite.forge.new_Sprite (Name => "Cobra",
World => the_Applet.gui_World.all'Access,
at_Site => gel.Math.Origin_3D,
graphics_Model => the_cobra_graphics_Model,
physics_Model => the_cobra_physics_Model);
the_Ground : constant gel.Sprite.view := gel.Forge.new_box_Sprite (the_Applet.gui_World,
Mass => 0.0,
Size => [50.0, 1.0, 50.0]);
next_render_Time : ada.calendar.Time;
begin
the_Applet.gui_World.Gravity_is ([0.0, -9.8, 0.0]);
the_Applet.gui_World.add (the_Ground); -- Add ground.
the_Applet.gui_World.add (the_Human); -- Add human.
the_Human.Site_is ([0.0, 5.0, 0.0]); --
-- the_Applet.gui_World.add (the_Cobra); -- Add cobra.
-- the_Cobra.Site_is ((0.0, 5.0, 0.0)); --
the_Applet.gui_Camera.Site_is ([0.0, 1.5, 2.6]); -- Position the camera.
-- the_Applet.gui_Camera.Site_is ((0.0, 100.0, 0.0)); -- Position the camera.
the_Applet.enable_simple_Dolly (in_World => 1); -- Enable user camera control via keyboards.
the_Applet.Dolly.Speed_is (0.1); -- Slow down the rate at which the dolly moves.
-- the_Applet.Dolly.Speed_is (0.5); -- Slow down the rate at which the dolly moves.
-- Set the lights position.
--
declare
Light : openGL.Light.item := the_Applet.Renderer.new_Light;
begin
Light.Site_is ([0.0, 1000.0, 1000.0]);
the_Applet.Renderer.set (Light);
end;
next_render_Time := ada.Calendar.clock;
while the_Applet.is_open
loop
the_Applet.freshen; -- Evolve the world, handle any new events and update the display.
next_render_Time := next_render_Time + 1.0/60.0;
delay until next_render_Time;
end loop;
the_Applet.destroy;
exception
when E : others =>
put_Line (Exception_Information (E));
end launch_opengl_Model;

View File

@@ -0,0 +1,17 @@
with
"gel",
"lace_shared";
project opengl_Model
is
for Object_Dir use "build";
for Exec_Dir use ".";
for Main use ("launch_opengl_model.adb");
for Languages use ("Ada");
package Ide renames Lace_shared.Ide;
package Builder renames Lace_shared.Builder;
package Compiler renames Lace_shared.Compiler;
package Binder renames Lace_shared.Binder;
end opengl_Model;

View File

@@ -0,0 +1,8 @@
procedure launch_mouse_Motion
--
-- Todo
--
is
begin
null;
end launch_mouse_Motion;

View File

@@ -0,0 +1,16 @@
with
"gel",
"lace_shared";
project Mouse_Motion
is
for Object_Dir use "build";
for Exec_Dir use ".";
for Main use ("launch_mouse_motion.adb");
package Ide renames Lace_shared.Ide;
package Builder renames Lace_shared.Builder;
package Compiler renames Lace_shared.Compiler;
package Binder renames Lace_shared.Binder;
end Mouse_Motion;

View File

@@ -0,0 +1,117 @@
with
gel.Window.setup,
gel.Applet.gui_world,
gel.World,
gel.Camera,
gel.Mouse,
gel.Sprite,
gel.Events,
gel.Forge,
Physics,
float_Math,
lace.Response,
lace.Event.utility,
Ada.Calendar,
Ada.Text_IO,
Ada.Exceptions;
pragma unreferenced (gel.Window.setup);
procedure launch_mouse_Selection
--
-- Places a sphere sprite in the world and registers an event repsonse to
-- handle mouse clicks on the sprite.
--
is
use lace.Event.utility,
ada.Text_IO;
begin
lace.Event.utility.use_text_Logger ("event.log");
lace.Event.utility.Logger.ignore (to_Kind (gel.Mouse.motion_Event'Tag));
declare
use ada.Calendar;
the_Applet : constant gel.Applet.gui_world.view := gel.Forge.new_gui_Applet ("mouse Selection",
space_Kind => physics.Bullet);
the_Ball : constant gel.Sprite.view := gel.Forge.new_ball_Sprite (the_Applet.World (1),
mass => 0.0);
type retreat_Sprite is new lace.Response.item with
record
Sprite : gel.Sprite.view;
end record;
overriding
procedure respond (Self : in out retreat_Sprite; to_Event : in lace.Event.Item'Class)
is
use float_Math;
begin
put_Line ("retreat_Sprite");
Self.Sprite.Site_is (self.Sprite.Site - the_Applet.gui_Camera.Spin * [0.0, 0.0, 1.0]);
end respond;
retreat_Sprite_Response : aliased retreat_Sprite := (lace.Response.item with sprite => the_Ball);
type advance_Sprite is new lace.Response.item with
record
Sprite : gel.Sprite.view;
end record;
overriding
procedure respond (Self : in out advance_Sprite; to_Event : in lace.Event.Item'Class)
is
use float_Math;
begin
put_Line ("advance_Sprite");
Self.Sprite.Site_is (self.Sprite.Site + the_Applet.gui_Camera.Spin * [0.0, 0.0, 1.0]);
end respond;
advance_Sprite_Response : aliased advance_Sprite := (lace.Response.Item with sprite => the_Ball);
next_render_Time : ada.calendar.Time;
begin
the_Ball.add (advance_Sprite_Response'unchecked_access,
to_Kind (gel.events.sprite_click_down_Event'Tag),
the_Applet.Name);
the_Ball.add (retreat_Sprite_Response'unchecked_access,
to_Kind (gel.events.sprite_click_up_Event'Tag),
the_Applet.Name);
the_Applet.gui_world .add (the_Ball, and_Children => False);
the_Applet.gui_Camera.Site_is ([0.0, 0.0, 5.0]);
the_Applet.enable_simple_Dolly (in_World => 1);
the_Applet.enable_Mouse (detect_Motion => False);
next_render_Time := ada.calendar.Clock;
while the_Applet.is_open
loop
the_Applet.gui_World.evolve;
the_Ball.respond;
the_Applet.freshen;
next_render_Time := next_render_Time + gel.World.evolve_Period;
delay until next_render_Time;
end loop;
the_Applet.destroy;
end;
lace.Event.utility.close;
exception
when E : others =>
lace.Event.utility.close;
put_Line ("Exception detected in 'launch_mouse_Selection' ...");
put_Line (ada.Exceptions.Exception_Information (E));
end launch_mouse_Selection;

View File

@@ -0,0 +1,17 @@
with
"gel",
"lace_shared";
project Mouse_selection
is
for Object_Dir use "build";
for Exec_Dir use ".";
for Main use ("launch_mouse_selection.adb");
for Languages use ("Ada");
package Ide renames Lace_shared.Ide;
package Builder renames Lace_shared.Builder;
package Compiler renames Lace_shared.Compiler;
package Binder renames Lace_shared.Binder;
end Mouse_selection;

View File

@@ -0,0 +1,18 @@
with
"gel",
"lace_shared";
project human_Model
is
for Object_Dir use "build";
for Exec_Dir use ".";
for Main use ("launch_human_model.adb");
for Languages use ("Ada");
package Ide renames Lace_shared.Ide;
package Builder renames Lace_shared.Builder;
package Compiler renames Lace_shared.Compiler;
package Binder renames Lace_shared.Binder;
end human_Model;

View File

@@ -0,0 +1,135 @@
with gel.Window.setup,
gel.Applet.gui_world,
gel.Camera;
with gel.Sprite,
openGL.Model.box.lit_colored_textured,
openGL.Model.any,
openGL.Model.sphere.lit_colored_textured,
gel.Human,
gel.Forge;
with opengl.Palette,
opengl.IO,
float_Math,
ada.Calendar,
ada.Strings.fixed;
with float_Math.algebra.linear.d3; use float_Math.algebra.linear.d3;
-- with float_Math.algebra.linear.d4; use float_Math.algebra.linear.d4;
with ada.Text_IO;
with GEL.human_Types;
with physics.Model;
with ada.Exceptions;
procedure launch_human_Model
--
-- Drops an gel human model onto a simple box terrain.
--
--
is
use gel.Applet, openGL.Model.box, gel.Human, gel.human_Types,
openGL, opengl.Palette,
float_Math,
ada.Calendar, ada.Strings, ada.Strings.fixed, ada.Text_IO, ada.Exceptions;
use type math.Real, opengl.Real;
the_Applet : constant gel.Applet.gui_World.view := gel.Forge.new_gui_Applet ("human Model", 1920, 1200);
the_Ground : constant gel.Sprite.view := gel.Forge.new_box_Sprite (the_Applet.gui_World,
mass => 0.0,
size => (50.0, 1.0, 50.0));
-- the_human_graphics_Model : aliased gel.graphics_Model.open_gl.view
-- := gel.graphics_Model.open_gl.forge.new_Model (scale => (1.0, 1.0, 1.0),
-- -- model => gel.to_Asset ("assets/gel/model/gel-human.dae"),
-- model => gel.to_Asset ("assets/gel/collada/mh-human-dae.dae"),
-- -- model => gel.to_Asset ("assets/gel/collada/alfieri.dae"),
-- texture => gel.null_Asset, -- gel.to_Asset ("assets/collada/gel-human-texture.tga"),
-- Texture_is_lucid => False);
-- the_human_physics_Model : constant gel.physics_Model.view
-- := gel.physics_Model.Forge.new_physics_Model (shape_Info => (kind => gel.physics_Model.Cube,
-- half_extents => 0.5 * (4.0, 1.0, 2.0)),
-- mass => 1.0);
-- -- the_human_physics_Model : constant gel.physics_Model.view
-- -- := gel.physics_Model.Forge.new_physics_Model (shape_Info => (kind => gel.physics_Model.a_Sphere,
-- -- sphere_radius => 0.2),
-- -- mass => 0.5);
my_Human : aliased gel.Human.item;
Counter : Integer := 0;
next_render_Time : ada.calendar.Time;
begin
the_Applet.gui_World.Gravity_is ((0.0, -1.0, 0.0));
the_Applet.gui_Camera.Site_is ((0.0, 0.0, 40.0)); -- Position the camera
the_Applet.enable_simple_Dolly (1); -- Enable user camera control via keyboards
the_Applet.enable_Mouse (detect_Motion => False); -- Enable mouse events.
gel.Human.use_Model ("assets/gel/collada/mh-human-dae.dae");
-- gel.Human.use_Model ("assets/gel/collada/alfieri.dae");
my_Human.define (the_Applet.gui_World,
null, -- the_human_graphics_Model,
null, -- the_human_physics_Model,
mass => 1.0);
the_Applet.gui_World.add (my_Human.base_Sprite, and_Children => True); -- Add the human
my_Human.base_Sprite.move ((0.0, 10.0, 0.0)); --
the_Applet.gui_World.add (the_Ground); -- Add the ground
the_Ground.Site_is ((0.0, -10.0, 0.0)); --
my_Human.motion_Mode_is (gel.Human.Animation);
-- the_Human.motion_Mode_is (gel.Human_v1.Physics);
-- my_Human.enable_Graphics;
-- my_Human.attach_program_Parameters_to_model_Faces;
next_render_Time := ada.Calendar.clock;
while the_Applet.is_open
loop
-- if Counter = 150 then
-- my_Human.Sprite (Head).Speed_is ((5.0, 5.0, 0.0));
-- my_Human.Sprite (Head).Gyre_is ((0.0, 5.0, 0.0));
--
-- my_Human.Sprite (Hand_L).Speed_is ((5.0, 10.0, 0.0));
-- my_Human.Sprite (Hand_L).Gyre_is ((0.0, 5.0, 0.0));
--
-- my_Human.Sprite (upLeg_L).Speed_is ((-5.0, 10.0, 0.0));
-- my_Human.Sprite (upLeg_L).Gyre_is ((0.0, 5.0, 0.0));
--
-- my_Human.Sprite (Foot_L).Speed_is ((-5.0, 10.0, 0.0));
-- my_Human.Sprite (Foot_L).Gyre_is ((0.0, 5.0, 0.0));
--
-- Counter := 0;
-- else
-- Counter := Counter + 1;
-- end if;
the_Applet.gui_World.evolve; -- (by => 1.0/60.0); -- evolve the world
-- my_Human .evolve;
my_Human.animate (world_Age => the_Applet.World.Age);
the_Applet.freshen; -- handle any new events and update the screen
delay 0.5;
next_render_Time := next_render_Time + 1.0/60.0;
delay until next_render_Time;
end loop;
-- opengl.IO.stop_Capture;
the_Applet.destroy;
exception
when E : others =>
put_Line (Exception_Information (E));
end launch_human_Model;

View File

@@ -0,0 +1,146 @@
with "gel";
project Human_Model_V1
is
for Object_Dir use "build";
for Exec_Dir use ".";
for Main use ("launch_human_model_v1.adb");
for Languages use ("Ada");
type Os_Type is
("Windows_NT", "Linux", "MacOSX");
Os : Os_Type := external ("OS");
type Restrictions is
("xgc", "ravenscar");
Restrictions : Restrictions := external ("restrictions");
type Platform is
("egl", "glx");
Opengl_Platform : Platform := external ("opengl_platform");
type Profile is
("safe", "lean", "desk");
Opengl_Profile : Profile := external ("opengl_profile");
package Compiler is
for Default_Switches ("ada") use ("-gnato", "-fstack-check", "-g", "-gnata");
end Compiler;
package Builder is
case Os is
when "Windows_NT" =>
when "Linux" =>
case Restrictions is
when "xgc" =>
case Opengl_Platform is
when "egl" =>
when "glx" =>
case Opengl_Profile is
when "safe" =>
when "lean" =>
for Default_Switches ("ada") use ("-j13", "-g", "-k");
when "desk" =>
for Default_Switches ("ada") use ("-j13", "-k", "-g");
end case;
end case;
when "ravenscar" =>
end case;
when "MacOSX" =>
end case;
end Builder;
package Binder is
case Os is
when "Windows_NT" =>
when "Linux" =>
case Restrictions is
when "xgc" =>
case Opengl_Platform is
when "egl" =>
when "glx" =>
case Opengl_Profile is
when "safe" =>
when "lean" =>
for Default_Switches ("ada") use ("-E");
when "desk" =>
for Default_Switches ("ada") use ("-E");
end case;
end case;
when "ravenscar" =>
end case;
when "MacOSX" =>
end case;
end Binder;
package Linker is
case Os is
when "Windows_NT" =>
when "Linux" =>
case Restrictions is
when "xgc" =>
case Opengl_Platform is
when "egl" =>
when "glx" =>
case Opengl_Profile is
when "safe" =>
when "lean" =>
for Default_Switches ("ada") use ("-g", "-lexpat", "-lGL", "-lX11", "-lm");
when "desk" =>
for Default_Switches ("ada") use ("-g", "-lGL", "-lX11", "-lm", "-lexpat");
end case;
end case;
when "ravenscar" =>
end case;
when "MacOSX" =>
end case;
end Linker;
end Human_Model_V1;

View File

@@ -0,0 +1,139 @@
with
gel.Window.setup,
gel.Applet.gui_world,
gel.Camera,
gel.Sprite,
gel.Human_v1,
gel.Forge,
gel.human_Types,
gel.human_Types_v1,
physics.Model,
openGL.Model.box.lit_colored_textured,
openGL.Model.any,
openGL.Model.sphere.lit_colored_textured,
opengl.Palette,
opengl.IO,
float_Math.algebra.linear.d3,
ada.Calendar,
ada.Strings.fixed,
ada.Text_IO,
ada.Exceptions;
procedure launch_human_Model_v1
--
-- Drops an gel human model onto a simple box terrain.
--
--
is
use gel.Applet, openGL.Model.box, gel.Human_v1, gel.human_Types,
openGL, opengl.Palette,
float_Math, float_Math.algebra.linear.d3,
ada.Calendar, ada.Strings, ada.Strings.fixed, ada.Text_IO, ada.Exceptions;
use type math.Real, opengl.Real;
the_Applet : constant gel.Applet.gui_World.view := gel.Forge.new_gui_Applet ("human Model", 1920, 1200);
the_Ground : constant gel.Sprite.view := gel.Forge.new_box_Sprite (the_Applet.gui_World,
mass => 0.0,
size => (50.0, 1.0, 50.0));
-- the_human_graphics_Model : aliased gel.graphics_Model.open_gl.view
-- := gel.graphics_Model.open_gl.forge.new_Model (scale => (1.0, 1.0, 1.0),
-- -- model => gel.to_Asset ("assets/gel/model/gel-human.dae"),
-- model => gel.to_Asset ("assets/gel/collada/mh-human-dae.dae"),
-- -- model => gel.to_Asset ("assets/gel/collada/alfieri.dae"),
-- texture => gel.null_Asset, -- gel.to_Asset ("assets/collada/gel-human-texture.tga"),
-- Texture_is_lucid => False);
-- the_human_physics_Model : constant gel.physics_Model.view
-- := gel.physics_Model.Forge.new_physics_Model (shape_Info => (kind => gel.physics_Model.Cube,
-- half_extents => 0.5 * (4.0, 1.0, 2.0)),
-- mass => 1.0);
-- -- the_human_physics_Model : constant gel.physics_Model.view
-- -- := gel.physics_Model.Forge.new_physics_Model (shape_Info => (kind => gel.physics_Model.a_Sphere,
-- -- sphere_radius => 0.2),
-- -- mass => 0.5);
my_Human : aliased gel.Human_v1.item;
use gel.Human_v1;
next_render_Time : ada.calendar.Time;
begin
gel.Human_v1.Mode_is (Skin);
gel.Human_v1.Mode_is (Bones);
-- gel.Human_v1.Mode_is (Skin_and_Bones);
the_Applet.gui_World.Gravity_is ((0.0, -0.0, 0.0));
-- the_Applet.gui_World.Gravity_is ((0.0, -9.8, 0.0));
-- the_Applet.gui_World.Gravity_is ((0.0, -0.5, 0.0));
-- -- the_Applet.gui_Camera.Site_is ((0.0, 1.0, 5.0)); -- Position the camera
-- the_Applet.gui_Camera.Site_is ((0.0, -9.0, 5.0)); -- Position the camera
the_Applet.gui_Camera.Site_is ((0.0, -0.0, 5.0)); -- Position the camera
the_Applet.enable_simple_Dolly (1); -- Enable user camera control via keyboards
the_Applet.Dolly.Speed_is (0.1);
the_Applet.enable_Mouse (detect_Motion => False); -- Enable mouse events.
-- gel.Human_v1.use_Model ("assets/mh-blender-no_bones.dae");
-- gel.Human_v1.use_Model ("assets/mh-blender-2.dae");
-- gel.Human_v1.use_Model ("assets/mh-blender-2-y_up.dae");
-- gel.Human_v1.use_Model ("assets/human-default.dae");
gel.Human_v1.use_Model ("assets/human-default-animated-01_01.dae");
-- gel.Human_v1.use_Model ("assets/human-new.dae");
-- gel.Human_v1.use_Model ("assets/human-default-1.dae");
-- gel.Human.use_Model ("assets/gel/collada/alfieri.dae");
my_Human.define (the_Applet.gui_World,
null, -- the_human_graphics_Model,
null, -- the_human_physics_Model,
mass => 1.0,
is_Kinematic => False);
-- my_Human.base_Sprite.rotate (to_spin => x_Rotation_from (to_Radians (0.0)));
-- my_Human.base_Sprite.move ((0.0, 2.0, 0.0));
the_Applet.gui_World.add (my_Human.base_Sprite, and_Children => True); -- Add the human
-- my_Human.base_Sprite.move ((0.0, 0.0, 0.0)); --
-- my_Human.skin_Sprite.rotate (to_spin => (x_Rotation_from (to_Radians (0.0))));
-- my_Human.skin_Sprite.move ((0.0, 2.0, 0.0));
the_Applet.gui_World.add (my_Human.skin_Sprite); -- Add human skin.
the_Applet.gui_World.add (the_Ground); -- Add the ground
the_Ground.Site_is ((0.0, -10.0, 0.0)); --
my_Human.motion_Mode_is (gel.Human_v1.Animation);
-- my_Human.enable_Graphics;
-- my_Human.attach_program_Parameters_to_model_Faces;
next_render_Time := ada.Calendar.clock;
while the_Applet.is_open
loop
-- my_Human.base_Sprite.apply_Force ((0.0, 100.0, 0.0));
-- my_Human.Sprite (for_Bone => gel.human_Types_v1.upper_Arm_R).apply_Force ((0.0, 10000.0, 0.0));
-- gel.Human_v1.Sprite (my_Human, for_Bone => gel.human_Types_v1.upper_Arm_R).apply_Force ((0.0, 100.0, 0.0));
the_Applet.gui_World.evolve; -- (by => 1.0/60.0); -- Evolve the world.
my_Human .evolve (the_Applet.gui_World.Age);
the_Applet.freshen; -- Handle any new events and update the screen.
next_render_Time := next_render_Time + 1.0/60.0;
delay until next_render_Time;
end loop;
-- opengl.IO.stop_Capture;
the_Applet.destroy;
-- exception
-- when E : others =>
-- put_Line (Exception_Information (E));
end launch_human_Model_v1;

View File

@@ -0,0 +1,185 @@
with gel.Sprite,
gel.Human_v1,
physics.Model,
openGL.Model.any,
gel.Window.setup,
gel.Applet.gui_world,
openGL.Model.box,
gel.any_Joint,
gel.Forge,
-- physics.Motor.spring.angular,
openGL.Palette,
float_math.algebra.linear.d3,
float_math.Random,
ada.Calendar,
ada.Exceptions;
with Ada.Text_IO; use Ada.Text_IO;
procedure launch_simple_Animation
--
-- Runs a single animation of a human model.
--
is
package Math renames float_Math;
use openGL.Model.box, gel.Human_v1,
openGL, openGL.Palette,
Math, math.Algebra.linear.d3,
ada.Calendar, ada.Exceptions;
use type math.Real, math.Index;
-- Options
--
-- add_Balls : Boolean := True;
add_Balls : Boolean := False;
-- the Applet
--
use gel.Applet.gui_world;
the_Applet : gel.Applet.gui_World.view := gel.Forge.new_gui_Applet ("Simple Animation", 1800, 1100);
-- the Ground
--
the_Ground : gel.Sprite.view := gel.Forge.new_box_Sprite (in_world => the_Applet.gui_World,
mass => 0.0,
size => (50.0, 1.0, 50.0));
-- human_model_Name : constant String := "assets/human-default-animated-01_01-y_up.dae";
human_model_Name : constant String := "assets/human-default-animated-01_01.dae";
-- human_model_Name : constant String := "assets/mh-blender-2.dae";
-- human_model_Name : constant String := "assets/human_animation.dae";
-- human_model_Name : constant String := "assets/alfieri.dae";
-- -- human_model_Name : constant String := "./assets/human-golf_swing-v1.dae";
-- human_model_Name : constant String := "assets/human-default-animated-01_01.dae";
-- -- human_model_Name : constant String := "assets/human-default-animated-01_02.dae";
-- -- human_model_Name : constant String := "assets/human-default-animated-01_03.dae";
-- -- human_model_Name : constant String := "assets/human-default-animated-01_04.dae";
-- -- human_model_Name : constant String := "assets/human-default-animated-01_05.dae";
next_render_Time : ada.calendar.Time;
Now : ada.calendar.Time := Ada.Calendar.Clock;
Counter : Integer := 0;
begin
-- gel.Human_v1.Mode_is (Skin);
gel.Human_v1.Mode_is (Skin_and_Bones);
-- gel.Human_v1.Mode_is (Bones);
--- Setup the applet.
--
the_Applet.gui_World.Gravity_is ((0.0, -10.0, 0.0));
the_Applet.gui_Camera.Site_is ((0.0, 0.0, 8.0)); -- Position the camera.
the_Applet.enable_simple_Dolly (in_World => 1); -- Enable user camera control via keyboard.
the_Applet.enable_Mouse (detect_Motion => False); -- Enable mouse events.
gel.Human_v1.use_Model (human_model_Name);
declare
the_Human : gel.Human_v1.view
:= gel.Human_v1.Forge.new_Human (the_Applet.gui_World,
null,
null,
Mass => 0.0,
is_Kinematic => True);
begin
--- Setup the human model.
--
-- -- the_Human.base_Sprite.rotate (to_spin => x_Rotation_from (to_Radians (0.0)));
-- the_Human.base_Sprite.rotate (to_spin => y_Rotation_from (to_Radians (90.0)));
-- the_Human.base_Sprite.move ((0.0, -10.0, 0.0));
-- the_Human.skin_Sprite.rotate (to_spin => (y_Rotation_from (to_Radians (45.0))));
-- the_Human.skin_Sprite.move ((0.0, 5.0, 0.0));
the_Applet.gui_World.add (the_Human.base_Sprite, and_Children => True); -- Add human.
the_Applet.gui_World.add (the_Human.skin_Sprite); -- Add human skin.
the_Human.motion_Mode_is (gel.Human_v1.Animation);
-- the_Human.motion_Mode_is (gel.Human_v1.Physics);
--- Add balls, if desired.
--
if add_Balls
then
declare
the_Balls : array (1 .. 150) of gel.Sprite.view := (others => gel.Forge.new_ball_Sprite (in_World => the_Applet.gui_World,
Mass => 1.0,
Radius => 0.5,
Color => (openGL.Palette.random_Color, Opaque)));
function random_Site return math.Vector_3
is
use math.Random;
half_Extent : constant math.Real := 25.0 / 2.0;
begin
return (random_Real (-half_Extent, half_Extent),
0.0,
random_Real (-half_Extent, half_Extent));
end;
begin
for i in the_Balls'Range
loop
the_Balls (i).Site_is (random_Site);
the_Applet.gui_World.add (the_Balls (i));
end loop;
end;
end if;
--- Setup the simulation world.
--
-- the_Applet.gui_World.add (the_Ground); -- Add the ground.
-- the_Ground.Site_is ((0.0, -0.5, 0.0));
-- the_Human.evolve (0.0); --the_Applet.gui_World.Age);
--- Run the simulation.
--
next_render_Time := ada.calendar.Clock;
while the_Applet.is_open
loop
Counter := Counter + 1;
the_Applet.gui_World.evolve; -- (by => 1.0/60.0); -- Evolve the world.
the_Human .evolve (the_Applet.gui_World.Age);
-- the_Human .evolve (0.0); --the_Applet.gui_World.Age);
the_Applet.freshen; -- Handle any new events and update the screen.
delay 0.1;
-- if Counter mod 600 = 0
-- then
-- null;
-- -- the_Human.base_Sprite.move (the_Human.base_Sprite.Site + (0.0, 0.0, -1.0));
-- the_Human.evolve (the_Applet.gui_World.Age);
-- end if;
next_render_Time := next_render_Time + 1.0/60.0;
-- delay until next_render_Time;
end loop;
the_Applet.destroy;
end;
-- exception
-- when E : others =>
-- put_Line (Exception_Information (E));
end launch_simple_Animation;

View File

@@ -0,0 +1,18 @@
with
"gel",
"lace_shared";
project simple_Animation
is
for Object_Dir use "build";
for Exec_Dir use ".";
for Main use ("launch_simple_animation.adb");
for Languages use ("Ada");
package Ide renames Lace_shared.Ide;
package Builder renames Lace_shared.Builder;
package Compiler renames Lace_shared.Compiler;
package Binder renames Lace_shared.Binder;
end simple_Animation;

View File

@@ -0,0 +1,294 @@
<?xml version="1.0" encoding="utf-8"?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<asset>
<contributor>
<author>Blender User</author>
<authoring_tool>Blender 2.93.5 commit date:2021-10-05, commit time:12:04, hash:a791bdabd0b2</authoring_tool>
</contributor>
<created>2021-11-07T15:25:05</created>
<modified>2021-11-07T15:25:05</modified>
<unit name="meter" meter="1"/>
<up_axis>Z_UP</up_axis>
</asset>
<library_cameras>
<camera id="Camera_001-camera" name="Camera.001">
<optics>
<technique_common>
<perspective>
<xfov sid="xfov">39.59775</xfov>
<aspect_ratio>1.777778</aspect_ratio>
<znear sid="znear">0.1</znear>
<zfar sid="zfar">100</zfar>
</perspective>
</technique_common>
</optics>
<extra>
<technique profile="blender">
<shiftx sid="shiftx" type="float">0</shiftx>
<shifty sid="shifty" type="float">0</shifty>
<dof_distance sid="dof_distance" type="float">10</dof_distance>
</technique>
</extra>
</camera>
<camera id="Camera-camera" name="Camera">
<optics>
<technique_common>
<perspective>
<xfov sid="xfov">39.59775</xfov>
<aspect_ratio>1.777778</aspect_ratio>
<znear sid="znear">0.1</znear>
<zfar sid="zfar">100</zfar>
</perspective>
</technique_common>
</optics>
<extra>
<technique profile="blender">
<shiftx sid="shiftx" type="float">0</shiftx>
<shifty sid="shifty" type="float">0</shifty>
<dof_distance sid="dof_distance" type="float">10</dof_distance>
</technique>
</extra>
</camera>
</library_cameras>
<library_lights>
<light id="Light_001-light" name="Light.001">
<technique_common>
<point>
<color sid="color">1000 1000 1000</color>
<constant_attenuation>1</constant_attenuation>
<linear_attenuation>0</linear_attenuation>
<quadratic_attenuation>0.00111109</quadratic_attenuation>
</point>
</technique_common>
<extra>
<technique profile="blender">
<type sid="type" type="int">0</type>
<flag sid="flag" type="int">0</flag>
<mode sid="mode" type="int">1</mode>
<gamma sid="blender_gamma" type="float">1</gamma>
<red sid="red" type="float">1</red>
<green sid="green" type="float">1</green>
<blue sid="blue" type="float">1</blue>
<shadow_r sid="blender_shadow_r" type="float">0</shadow_r>
<shadow_g sid="blender_shadow_g" type="float">0</shadow_g>
<shadow_b sid="blender_shadow_b" type="float">0</shadow_b>
<energy sid="blender_energy" type="float">1000</energy>
<dist sid="blender_dist" type="float">29.99998</dist>
<spotsize sid="spotsize" type="float">75</spotsize>
<spotblend sid="spotblend" type="float">0.15</spotblend>
<att1 sid="att1" type="float">0</att1>
<att2 sid="att2" type="float">1</att2>
<falloff_type sid="falloff_type" type="int">2</falloff_type>
<clipsta sid="clipsta" type="float">0.04999995</clipsta>
<clipend sid="clipend" type="float">30.002</clipend>
<bias sid="bias" type="float">1</bias>
<soft sid="soft" type="float">3</soft>
<bufsize sid="bufsize" type="int">2880</bufsize>
<samp sid="samp" type="int">3</samp>
<buffers sid="buffers" type="int">1</buffers>
<area_shape sid="area_shape" type="int">1</area_shape>
<area_size sid="area_size" type="float">0.1</area_size>
<area_sizey sid="area_sizey" type="float">0.1</area_sizey>
<area_sizez sid="area_sizez" type="float">1</area_sizez>
</technique>
</extra>
</light>
<light id="Light-light" name="Light">
<technique_common>
<point>
<color sid="color">1000 1000 1000</color>
<constant_attenuation>1</constant_attenuation>
<linear_attenuation>0</linear_attenuation>
<quadratic_attenuation>0.00111109</quadratic_attenuation>
</point>
</technique_common>
<extra>
<technique profile="blender">
<type sid="type" type="int">0</type>
<flag sid="flag" type="int">0</flag>
<mode sid="mode" type="int">1</mode>
<gamma sid="blender_gamma" type="float">1</gamma>
<red sid="red" type="float">1</red>
<green sid="green" type="float">1</green>
<blue sid="blue" type="float">1</blue>
<shadow_r sid="blender_shadow_r" type="float">0</shadow_r>
<shadow_g sid="blender_shadow_g" type="float">0</shadow_g>
<shadow_b sid="blender_shadow_b" type="float">0</shadow_b>
<energy sid="blender_energy" type="float">1000</energy>
<dist sid="blender_dist" type="float">29.99998</dist>
<spotsize sid="spotsize" type="float">75</spotsize>
<spotblend sid="spotblend" type="float">0.15</spotblend>
<att1 sid="att1" type="float">0</att1>
<att2 sid="att2" type="float">1</att2>
<falloff_type sid="falloff_type" type="int">2</falloff_type>
<clipsta sid="clipsta" type="float">0.04999995</clipsta>
<clipend sid="clipend" type="float">30.002</clipend>
<bias sid="bias" type="float">1</bias>
<soft sid="soft" type="float">3</soft>
<bufsize sid="bufsize" type="int">2880</bufsize>
<samp sid="samp" type="int">3</samp>
<buffers sid="buffers" type="int">1</buffers>
<area_shape sid="area_shape" type="int">1</area_shape>
<area_size sid="area_size" type="float">0.1</area_size>
<area_sizey sid="area_sizey" type="float">0.1</area_sizey>
<area_sizez sid="area_sizez" type="float">1</area_sizez>
</technique>
</extra>
</light>
</library_lights>
<library_images/>
<library_geometries>
<geometry id="Cube_001-mesh" name="Cube.001">
<mesh>
<source id="Cube_001-mesh-positions">
<float_array id="Cube_001-mesh-positions-array" count="24">-1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1</float_array>
<technique_common>
<accessor source="#Cube_001-mesh-positions-array" count="8" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="Cube_001-mesh-normals">
<float_array id="Cube_001-mesh-normals-array" count="18">-1 0 0 0 1 0 1 0 0 0 -1 0 0 0 -1 0 0 1</float_array>
<technique_common>
<accessor source="#Cube_001-mesh-normals-array" count="6" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<vertices id="Cube_001-mesh-vertices">
<input semantic="POSITION" source="#Cube_001-mesh-positions"/>
</vertices>
<triangles count="12">
<input semantic="VERTEX" source="#Cube_001-mesh-vertices" offset="0"/>
<input semantic="NORMAL" source="#Cube_001-mesh-normals" offset="1"/>
<p>3 0 2 0 0 0 7 1 6 1 2 1 5 2 4 2 6 2 1 3 0 3 4 3 2 4 6 4 4 4 7 5 3 5 1 5 1 0 3 0 0 0 3 1 7 1 2 1 7 2 5 2 6 2 5 3 1 3 4 3 0 4 2 4 4 4 5 5 7 5 1 5</p>
</triangles>
</mesh>
</geometry>
</library_geometries>
<library_controllers>
<controller id="Armature_Cube-skin" name="Armature">
<skin source="#Cube_001-mesh">
<bind_shape_matrix>1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</bind_shape_matrix>
<source id="Armature_Cube-skin-joints">
<Name_array id="Armature_Cube-skin-joints-array" count="1">Bone</Name_array>
<technique_common>
<accessor source="#Armature_Cube-skin-joints-array" count="1" stride="1">
<param name="JOINT" type="name"/>
</accessor>
</technique_common>
</source>
<source id="Armature_Cube-skin-bind_poses">
<float_array id="Armature_Cube-skin-bind_poses-array" count="16">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</float_array>
<technique_common>
<accessor source="#Armature_Cube-skin-bind_poses-array" count="1" stride="16">
<param name="TRANSFORM" type="float4x4"/>
</accessor>
</technique_common>
</source>
<source id="Armature_Cube-skin-weights">
<float_array id="Armature_Cube-skin-weights-array" count="4">1 1 1 1</float_array>
<technique_common>
<accessor source="#Armature_Cube-skin-weights-array" count="4" stride="1">
<param name="WEIGHT" type="float"/>
</accessor>
</technique_common>
</source>
<joints>
<input semantic="JOINT" source="#Armature_Cube-skin-joints"/>
<input semantic="INV_BIND_MATRIX" source="#Armature_Cube-skin-bind_poses"/>
</joints>
<vertex_weights count="8">
<input semantic="JOINT" source="#Armature_Cube-skin-joints" offset="0"/>
<input semantic="WEIGHT" source="#Armature_Cube-skin-weights" offset="1"/>
<vcount>0 0 0 0 1 1 1 1 </vcount>
<v>0 0 0 1 0 2 0 3</v>
</vertex_weights>
</skin>
</controller>
</library_controllers>
<library_animations>
<animation id="action_container-Armature" name="Armature">
<animation id="Armature_ArmatureAction_Bone_pose_matrix" name="Armature">
<source id="Armature_ArmatureAction_Bone_pose_matrix-input">
<float_array id="Armature_ArmatureAction_Bone_pose_matrix-input-array" count="30">0.04166662 0.08333331 0.125 0.1666666 0.2083333 0.25 0.2916666 0.3333333 0.375 0.4166666 0.4583333 0.5 0.5416667 0.5833333 0.625 0.6666667 0.7083333 0.75 0.7916667 0.8333333 0.875 0.9166667 0.9583333 1 1.041667 1.083333 1.125 1.166667 1.208333 1.25</float_array>
<technique_common>
<accessor source="#Armature_ArmatureAction_Bone_pose_matrix-input-array" count="30" stride="1">
<param name="TIME" type="float"/>
</accessor>
</technique_common>
</source>
<source id="Armature_ArmatureAction_Bone_pose_matrix-output">
<float_array id="Armature_ArmatureAction_Bone_pose_matrix-output-array" count="480">1 0 0 -0.01620697 0 1 0 -0.01553852 0 0 1 1.967363 0 0 0 1 1 0 0 -0.01590013 0 1 0 -0.01674705 0 0 1 1.93062 0 0 0 1 1 0 0 -0.01502423 0 1 0 -0.02019687 0 0 1 1.825735 0 0 0 1 1 0 0 -0.01364621 0 1 0 -0.02562429 0 0 1 1.660725 0 0 0 1 1 0 0 -0.01183303 0 1 0 -0.03276562 0 0 1 1.443606 0 0 0 1 1 0 0 -0.009651639 0 1 0 -0.04135721 0 0 1 1.182396 0 0 0 1 1 0 0 -0.007168981 0 1 0 -0.05113535 0 0 1 0.8851104 0 0 0 1 1 0 0 -0.004452004 0 1 0 -0.06183637 0 0 1 0.5597664 0 0 0 1 1 0 0 -0.001567657 0 1 0 -0.0731966 0 0 1 0.2143808 0 0 0 1 1 0 0 0.001417111 0 1 0 -0.08495234 0 0 1 -0.1430297 0 0 0 1 1 0 0 0.004435355 0 1 0 -0.09683992 0 0 1 -0.5044488 0 0 0 1 1 0 0 0.007420126 0 1 0 -0.1085957 0 0 1 -0.8618598 0 0 0 1 1 0 0 0.01030447 0 1 0 -0.1199559 0 0 1 -1.207245 0 0 0 1 1 0 0 0.01302144 0 1 0 -0.1306569 0 0 1 -1.532588 0 0 0 1 1 0 0 0.01550411 0 1 0 -0.1404351 0 0 1 -1.829875 0 0 0 1 1 0 0 0.0176855 0 1 0 -0.1490266 0 0 1 -2.091084 0 0 0 1 1 0 0 0.01949868 0 1 0 -0.156168 0 0 1 -2.308203 0 0 0 1 1 0 0 0.02087668 0 1 0 -0.1615954 0 0 1 -2.473213 0 0 0 1 1 0 0 0.0217526 0 1 0 -0.1650452 0 0 1 -2.578098 0 0 0 1 1 0 0 0.02205944 0 1 0 -0.1662537 0 0 1 -2.614841 0 0 0 1 1 0 0 0.02205944 0 1 0 -0.1662537 0 0 1 -2.614841 0 0 0 1 1 0 0 0.02205944 0 1 0 -0.1662537 0 0 1 -2.614841 0 0 0 1 1 0 0 0.02205944 0 1 0 -0.1662537 0 0 1 -2.614841 0 0 0 1 1 0 0 0.02205944 0 1 0 -0.1662537 0 0 1 -2.614841 0 0 0 1 1 0 0 0.02205944 0 1 0 -0.1662537 0 0 1 -2.614841 0 0 0 1 1 0 0 0.02205944 0 1 0 -0.1662537 0 0 1 -2.614841 0 0 0 1 1 0 0 0.02205944 0 1 0 -0.1662537 0 0 1 -2.614841 0 0 0 1 1 0 0 0.02205944 0 1 0 -0.1662537 0 0 1 -2.614841 0 0 0 1 1 0 0 0.02205944 0 1 0 -0.1662537 0 0 1 -2.614841 0 0 0 1 1 0 0 0.02205944 0 1 0 -0.1662537 0 0 1 -2.614841 0 0 0 1</float_array>
<technique_common>
<accessor source="#Armature_ArmatureAction_Bone_pose_matrix-output-array" count="30" stride="16">
<param name="TRANSFORM" type="float4x4"/>
</accessor>
</technique_common>
</source>
<source id="Armature_ArmatureAction_Bone_pose_matrix-interpolation">
<Name_array id="Armature_ArmatureAction_Bone_pose_matrix-interpolation-array" count="30">LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR LINEAR</Name_array>
<technique_common>
<accessor source="#Armature_ArmatureAction_Bone_pose_matrix-interpolation-array" count="30" stride="1">
<param name="INTERPOLATION" type="name"/>
</accessor>
</technique_common>
</source>
<sampler id="Armature_ArmatureAction_Bone_pose_matrix-sampler">
<input semantic="INPUT" source="#Armature_ArmatureAction_Bone_pose_matrix-input"/>
<input semantic="OUTPUT" source="#Armature_ArmatureAction_Bone_pose_matrix-output"/>
<input semantic="INTERPOLATION" source="#Armature_ArmatureAction_Bone_pose_matrix-interpolation"/>
</sampler>
<channel source="#Armature_ArmatureAction_Bone_pose_matrix-sampler" target="Armature_Bone/transform"/>
</animation>
</animation>
</library_animations>
<library_visual_scenes>
<visual_scene id="Scene" name="Scene">
<node id="Light_001" name="Light.001" type="NODE">
<matrix sid="transform">-0.2908646 -0.7711008 0.5663932 4.076245 0.9551712 -0.1998834 0.2183912 1.005454 -0.055189 0.6045247 0.7946723 5.903862 0 0 0 1</matrix>
<instance_light url="#Light_001-light"/>
</node>
<node id="Camera_001" name="Camera.001" type="NODE">
<matrix sid="transform">0.6859207 -0.3240135 0.6515582 7.358891 0.7276763 0.3054209 -0.6141704 -6.925791 -4.01133e-9 0.8953956 0.4452714 4.958309 0 0 0 1</matrix>
<instance_camera url="#Camera_001-camera"/>
</node>
<node id="Armature" name="Armature" type="NODE">
<matrix sid="transform">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</matrix>
<node id="Armature_Bone" name="Bone" sid="Bone" type="JOINT">
<matrix sid="transform">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</matrix>
<extra>
<technique profile="blender">
<layer sid="layer" type="string">0</layer>
<tip_x sid="tip_x" type="float">0</tip_x>
<tip_y sid="tip_y" type="float">1</tip_y>
<tip_z sid="tip_z" type="float">0</tip_z>
</technique>
</extra>
</node>
<node id="Cube" name="Cube" type="NODE">
<matrix sid="transform">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</matrix>
<instance_controller url="#Armature_Cube-skin">
<skeleton>#Armature_Bone</skeleton>
</instance_controller>
</node>
</node>
<node id="Camera" name="Camera" type="NODE">
<matrix sid="transform">0.6859207 -0.3240135 0.6515582 7.358891 0.7276763 0.3054208 -0.6141704 -6.925791 0 0.8953956 0.4452714 4.958309 0 0 0 1</matrix>
<instance_camera url="#Camera-camera"/>
</node>
<node id="Light" name="Light" type="NODE">
<matrix sid="transform">-0.2908646 -0.7711008 0.5663932 4.076245 0.9551712 -0.1998834 0.2183912 1.005454 -0.05518906 0.6045247 0.7946723 5.903862 0 0 0 1</matrix>
<instance_light url="#Light-light"/>
</node>
</visual_scene>
</library_visual_scenes>
<scene>
<instance_visual_scene url="#Scene"/>
</scene>
</COLLADA>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,192 @@
<?xml version="1.0" encoding="utf-8"?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<asset>
<contributor>
<author>Blender User</author>
<authoring_tool>Blender 2.93.5 commit date:2021-10-05, commit time:12:04, hash:a791bdabd0b2</authoring_tool>
</contributor>
<created>2021-11-07T15:11:28</created>
<modified>2021-11-07T15:11:28</modified>
<unit name="meter" meter="1"/>
<up_axis>Z_UP</up_axis>
</asset>
<library_cameras>
<camera id="Camera-camera" name="Camera">
<optics>
<technique_common>
<perspective>
<xfov sid="xfov">39.59775</xfov>
<aspect_ratio>1.777778</aspect_ratio>
<znear sid="znear">0.1</znear>
<zfar sid="zfar">100</zfar>
</perspective>
</technique_common>
</optics>
<extra>
<technique profile="blender">
<shiftx sid="shiftx" type="float">0</shiftx>
<shifty sid="shifty" type="float">0</shifty>
<dof_distance sid="dof_distance" type="float">10</dof_distance>
</technique>
</extra>
</camera>
</library_cameras>
<library_lights>
<light id="Light-light" name="Light">
<technique_common>
<point>
<color sid="color">1000 1000 1000</color>
<constant_attenuation>1</constant_attenuation>
<linear_attenuation>0</linear_attenuation>
<quadratic_attenuation>0.00111109</quadratic_attenuation>
</point>
</technique_common>
<extra>
<technique profile="blender">
<type sid="type" type="int">0</type>
<flag sid="flag" type="int">0</flag>
<mode sid="mode" type="int">1</mode>
<gamma sid="blender_gamma" type="float">1</gamma>
<red sid="red" type="float">1</red>
<green sid="green" type="float">1</green>
<blue sid="blue" type="float">1</blue>
<shadow_r sid="blender_shadow_r" type="float">0</shadow_r>
<shadow_g sid="blender_shadow_g" type="float">0</shadow_g>
<shadow_b sid="blender_shadow_b" type="float">0</shadow_b>
<energy sid="blender_energy" type="float">1000</energy>
<dist sid="blender_dist" type="float">29.99998</dist>
<spotsize sid="spotsize" type="float">75</spotsize>
<spotblend sid="spotblend" type="float">0.15</spotblend>
<att1 sid="att1" type="float">0</att1>
<att2 sid="att2" type="float">1</att2>
<falloff_type sid="falloff_type" type="int">2</falloff_type>
<clipsta sid="clipsta" type="float">0.04999995</clipsta>
<clipend sid="clipend" type="float">30.002</clipend>
<bias sid="bias" type="float">1</bias>
<soft sid="soft" type="float">3</soft>
<bufsize sid="bufsize" type="int">2880</bufsize>
<samp sid="samp" type="int">3</samp>
<buffers sid="buffers" type="int">1</buffers>
<area_shape sid="area_shape" type="int">1</area_shape>
<area_size sid="area_size" type="float">0.1</area_size>
<area_sizey sid="area_sizey" type="float">0.1</area_sizey>
<area_sizez sid="area_sizez" type="float">1</area_sizez>
</technique>
</extra>
</light>
</library_lights>
<library_images/>
<library_geometries>
<geometry id="Cube_001-mesh" name="Cube.001">
<mesh>
<source id="Cube_001-mesh-positions">
<float_array id="Cube_001-mesh-positions-array" count="24">-1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1</float_array>
<technique_common>
<accessor source="#Cube_001-mesh-positions-array" count="8" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="Cube_001-mesh-normals">
<float_array id="Cube_001-mesh-normals-array" count="18">-1 0 0 0 1 0 1 0 0 0 -1 0 0 0 -1 0 0 1</float_array>
<technique_common>
<accessor source="#Cube_001-mesh-normals-array" count="6" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<vertices id="Cube_001-mesh-vertices">
<input semantic="POSITION" source="#Cube_001-mesh-positions"/>
</vertices>
<triangles count="12">
<input semantic="VERTEX" source="#Cube_001-mesh-vertices" offset="0"/>
<input semantic="NORMAL" source="#Cube_001-mesh-normals" offset="1"/>
<p>3 0 2 0 0 0 7 1 6 1 2 1 5 2 4 2 6 2 1 3 0 3 4 3 2 4 6 4 4 4 7 5 3 5 1 5 1 0 3 0 0 0 3 1 7 1 2 1 7 2 5 2 6 2 5 3 1 3 4 3 0 4 2 4 4 4 5 5 7 5 1 5</p>
</triangles>
</mesh>
</geometry>
</library_geometries>
<library_controllers>
<controller id="Armature_Cube-skin" name="Armature">
<skin source="#Cube_001-mesh">
<bind_shape_matrix>1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</bind_shape_matrix>
<source id="Armature_Cube-skin-joints">
<Name_array id="Armature_Cube-skin-joints-array" count="1">Bone</Name_array>
<technique_common>
<accessor source="#Armature_Cube-skin-joints-array" count="1" stride="1">
<param name="JOINT" type="name"/>
</accessor>
</technique_common>
</source>
<source id="Armature_Cube-skin-bind_poses">
<float_array id="Armature_Cube-skin-bind_poses-array" count="16">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</float_array>
<technique_common>
<accessor source="#Armature_Cube-skin-bind_poses-array" count="1" stride="16">
<param name="TRANSFORM" type="float4x4"/>
</accessor>
</technique_common>
</source>
<source id="Armature_Cube-skin-weights">
<float_array id="Armature_Cube-skin-weights-array" count="4">1 1 1 1</float_array>
<technique_common>
<accessor source="#Armature_Cube-skin-weights-array" count="4" stride="1">
<param name="WEIGHT" type="float"/>
</accessor>
</technique_common>
</source>
<joints>
<input semantic="JOINT" source="#Armature_Cube-skin-joints"/>
<input semantic="INV_BIND_MATRIX" source="#Armature_Cube-skin-bind_poses"/>
</joints>
<vertex_weights count="8">
<input semantic="JOINT" source="#Armature_Cube-skin-joints" offset="0"/>
<input semantic="WEIGHT" source="#Armature_Cube-skin-weights" offset="1"/>
<vcount>0 0 0 0 1 1 1 1 </vcount>
<v>0 0 0 1 0 2 0 3</v>
</vertex_weights>
</skin>
</controller>
</library_controllers>
<library_animations>
<animation id="action_container-Armature" name="Armature"/>
</library_animations>
<library_visual_scenes>
<visual_scene id="Scene" name="Scene">
<node id="Armature" name="Armature" type="NODE">
<matrix sid="transform">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</matrix>
<node id="Armature_Bone" name="Bone" sid="Bone" type="JOINT">
<matrix sid="transform">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</matrix>
<extra>
<technique profile="blender">
<layer sid="layer" type="string">0</layer>
<tip_x sid="tip_x" type="float">0</tip_x>
<tip_y sid="tip_y" type="float">1</tip_y>
<tip_z sid="tip_z" type="float">0</tip_z>
</technique>
</extra>
</node>
<node id="Cube" name="Cube" type="NODE">
<matrix sid="transform">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</matrix>
<instance_controller url="#Armature_Cube-skin">
<skeleton>#Armature_Bone</skeleton>
</instance_controller>
</node>
</node>
<node id="Camera" name="Camera" type="NODE">
<matrix sid="transform">0.6859207 -0.3240135 0.6515582 7.358891 0.7276763 0.3054208 -0.6141704 -6.925791 0 0.8953956 0.4452714 4.958309 0 0 0 1</matrix>
<instance_camera url="#Camera-camera"/>
</node>
<node id="Light" name="Light" type="NODE">
<matrix sid="transform">-0.2908646 -0.7711008 0.5663932 4.076245 0.9551712 -0.1998834 0.2183912 1.005454 -0.05518906 0.6045247 0.7946723 5.903862 0 0 0 1</matrix>
<instance_light url="#Light-light"/>
</node>
</visual_scene>
</library_visual_scenes>
<scene>
<instance_visual_scene url="#Scene"/>
</scene>
</COLLADA>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,113 @@
<?xml version="1.0" encoding="utf-8"?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
<asset>
<contributor>
<author>Blender User</author>
<authoring_tool>Blender 2.76.0 commit date:2015-10-10, commit time:08:48, hash:23f7e16</authoring_tool>
</contributor>
<created>2015-10-20T23:29:46</created>
<modified>2015-10-20T23:29:46</modified>
<unit name="meter" meter="1"/>
<up_axis>Z_UP</up_axis>
</asset>
<library_images/>
<library_geometries>
<geometry id="Cube_001-mesh" name="Cube.001">
<mesh>
<source id="Cube_001-mesh-positions">
<float_array id="Cube_001-mesh-positions-array" count="24">-1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1</float_array>
<technique_common>
<accessor source="#Cube_001-mesh-positions-array" count="8" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="Cube_001-mesh-normals">
<float_array id="Cube_001-mesh-normals-array" count="18">-1 0 0 0 1 0 1 0 0 0 -1 0 0 0 -1 0 0 1</float_array>
<technique_common>
<accessor source="#Cube_001-mesh-normals-array" count="6" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<vertices id="Cube_001-mesh-vertices">
<input semantic="POSITION" source="#Cube_001-mesh-positions"/>
</vertices>
<polylist count="12">
<input semantic="VERTEX" source="#Cube_001-mesh-vertices" offset="0"/>
<input semantic="NORMAL" source="#Cube_001-mesh-normals" offset="1"/>
<vcount>3 3 3 3 3 3 3 3 3 3 3 3 </vcount>
<p>3 0 2 0 0 0 7 1 6 1 2 1 5 2 4 2 6 2 1 3 0 3 4 3 2 4 6 4 4 4 7 5 3 5 1 5 1 0 3 0 0 0 3 1 7 1 2 1 7 2 5 2 6 2 5 3 1 3 4 3 0 4 2 4 4 4 5 5 7 5 1 5</p>
</polylist>
</mesh>
</geometry>
</library_geometries>
<library_controllers>
<controller id="Armature_Cube-skin" name="Armature">
<skin source="#Cube_001-mesh">
<bind_shape_matrix>1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</bind_shape_matrix>
<source id="Armature_Cube-skin-joints">
<Name_array id="Armature_Cube-skin-joints-array" count="1">Bone</Name_array>
<technique_common>
<accessor source="#Armature_Cube-skin-joints-array" count="1" stride="1">
<param name="JOINT" type="name"/>
</accessor>
</technique_common>
</source>
<source id="Armature_Cube-skin-bind_poses">
<float_array id="Armature_Cube-skin-bind_poses-array" count="16">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</float_array>
<technique_common>
<accessor source="#Armature_Cube-skin-bind_poses-array" count="1" stride="16">
<param name="TRANSFORM" type="float4x4"/>
</accessor>
</technique_common>
</source>
<source id="Armature_Cube-skin-weights">
<float_array id="Armature_Cube-skin-weights-array" count="4">1 1 1 1</float_array>
<technique_common>
<accessor source="#Armature_Cube-skin-weights-array" count="4" stride="1">
<param name="WEIGHT" type="float"/>
</accessor>
</technique_common>
</source>
<joints>
<input semantic="JOINT" source="#Armature_Cube-skin-joints"/>
<input semantic="INV_BIND_MATRIX" source="#Armature_Cube-skin-bind_poses"/>
</joints>
<vertex_weights count="8">
<input semantic="JOINT" source="#Armature_Cube-skin-joints" offset="0"/>
<input semantic="WEIGHT" source="#Armature_Cube-skin-weights" offset="1"/>
<vcount>0 0 0 0 1 1 1 1 </vcount>
<v>0 0 0 1 0 2 0 3</v>
</vertex_weights>
</skin>
</controller>
</library_controllers>
<library_visual_scenes>
<visual_scene id="Scene" name="Scene">
<node id="Armature" name="Armature" type="NODE">
<matrix sid="transform">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</matrix>
<node id="Bone" name="Bone" sid="Bone" type="JOINT">
<matrix sid="transform">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</matrix>
</node>
</node>
<node id="Cube" name="Cube" type="NODE">
<translate sid="location">0 0 0</translate>
<rotate sid="rotationZ">0 0 1 0</rotate>
<rotate sid="rotationY">0 1 0 0</rotate>
<rotate sid="rotationX">1 0 0 0</rotate>
<scale sid="scale">1 1 1</scale>
<instance_controller url="#Armature_Cube-skin">
<skeleton>#Bone</skeleton>
</instance_controller>
</node>
</visual_scene>
</library_visual_scenes>
<scene>
<instance_visual_scene url="#Scene"/>
</scene>
</COLLADA>

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,113 @@
<?xml version="1.0" encoding="utf-8"?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
<asset>
<contributor>
<author>Blender User</author>
<authoring_tool>Blender 2.75.0 commit date:2015-07-07, commit time:14:56, hash:c27589e</authoring_tool>
</contributor>
<created>2015-09-26T21:16:48</created>
<modified>2015-09-26T21:16:48</modified>
<unit name="meter" meter="1"/>
<up_axis>Z_UP</up_axis>
</asset>
<library_images/>
<library_geometries>
<geometry id="Cube_001-mesh" name="Cube.001">
<mesh>
<source id="Cube_001-mesh-positions">
<float_array id="Cube_001-mesh-positions-array" count="24">-1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1</float_array>
<technique_common>
<accessor source="#Cube_001-mesh-positions-array" count="8" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="Cube_001-mesh-normals">
<float_array id="Cube_001-mesh-normals-array" count="18">-1 0 0 0 1 0 1 0 0 0 -1 0 0 0 -1 0 0 1</float_array>
<technique_common>
<accessor source="#Cube_001-mesh-normals-array" count="6" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<vertices id="Cube_001-mesh-vertices">
<input semantic="POSITION" source="#Cube_001-mesh-positions"/>
</vertices>
<polylist count="12">
<input semantic="VERTEX" source="#Cube_001-mesh-vertices" offset="0"/>
<input semantic="NORMAL" source="#Cube_001-mesh-normals" offset="1"/>
<vcount>3 3 3 3 3 3 3 3 3 3 3 3 </vcount>
<p>3 0 2 0 0 0 7 1 6 1 2 1 5 2 4 2 6 2 1 3 0 3 4 3 2 4 6 4 4 4 7 5 3 5 1 5 1 0 3 0 0 0 3 1 7 1 2 1 7 2 5 2 6 2 5 3 1 3 4 3 0 4 2 4 4 4 5 5 7 5 1 5</p>
</polylist>
</mesh>
</geometry>
</library_geometries>
<library_controllers>
<controller id="Armature_Cube-skin" name="Armature">
<skin source="#Cube_001-mesh">
<bind_shape_matrix>1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</bind_shape_matrix>
<source id="Armature_Cube-skin-joints">
<Name_array id="Armature_Cube-skin-joints-array" count="1">Bone</Name_array>
<technique_common>
<accessor source="#Armature_Cube-skin-joints-array" count="1" stride="1">
<param name="JOINT" type="name"/>
</accessor>
</technique_common>
</source>
<source id="Armature_Cube-skin-bind_poses">
<float_array id="Armature_Cube-skin-bind_poses-array" count="16">0 -1 0 0 1 0 0 0 0 0 1 0 0 0 0 1</float_array>
<technique_common>
<accessor source="#Armature_Cube-skin-bind_poses-array" count="1" stride="16">
<param name="TRANSFORM" type="float4x4"/>
</accessor>
</technique_common>
</source>
<source id="Armature_Cube-skin-weights">
<float_array id="Armature_Cube-skin-weights-array" count="4">1 1 1 1</float_array>
<technique_common>
<accessor source="#Armature_Cube-skin-weights-array" count="4" stride="1">
<param name="WEIGHT" type="float"/>
</accessor>
</technique_common>
</source>
<joints>
<input semantic="JOINT" source="#Armature_Cube-skin-joints"/>
<input semantic="INV_BIND_MATRIX" source="#Armature_Cube-skin-bind_poses"/>
</joints>
<vertex_weights count="8">
<input semantic="JOINT" source="#Armature_Cube-skin-joints" offset="0"/>
<input semantic="WEIGHT" source="#Armature_Cube-skin-weights" offset="1"/>
<vcount>0 0 0 0 1 1 1 1 </vcount>
<v>0 0 0 1 0 2 0 3</v>
</vertex_weights>
</skin>
</controller>
</library_controllers>
<library_visual_scenes>
<visual_scene id="Scene" name="Scene">
<node id="Armature" name="Armature" type="NODE">
<matrix sid="transform">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</matrix>
<node id="Bone" name="Bone" sid="Bone" type="JOINT">
<matrix sid="transform">0 1 0 0 -1 0 0 0 0 0 1 0 0 0 0 1</matrix>
</node>
</node>
<node id="Cube" name="Cube" type="NODE">
<translate sid="location">0 0 0</translate>
<rotate sid="rotationZ">0 0 1 0</rotate>
<rotate sid="rotationY">0 1 0 0</rotate>
<rotate sid="rotationX">1 0 0 0</rotate>
<scale sid="scale">1 1 1</scale>
<instance_controller url="#Armature_Cube-skin">
<skeleton>#Bone</skeleton>
</instance_controller>
</node>
</visual_scene>
</library_visual_scenes>
<scene>
<instance_visual_scene url="#Scene"/>
</scene>
</COLLADA>

View File

@@ -0,0 +1,113 @@
<?xml version="1.0" encoding="utf-8"?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
<asset>
<contributor>
<author>Blender User</author>
<authoring_tool>Blender 2.75.0 commit date:2015-07-07, commit time:14:56, hash:c27589e</authoring_tool>
</contributor>
<created>2015-09-26T21:16:48</created>
<modified>2015-09-26T21:16:48</modified>
<unit name="meter" meter="1"/>
<up_axis>Z_UP</up_axis>
</asset>
<library_images/>
<library_geometries>
<geometry id="Cube_001-mesh" name="Cube.001">
<mesh>
<source id="Cube_001-mesh-positions">
<float_array id="Cube_001-mesh-positions-array" count="24">-1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1</float_array>
<technique_common>
<accessor source="#Cube_001-mesh-positions-array" count="8" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="Cube_001-mesh-normals">
<float_array id="Cube_001-mesh-normals-array" count="18">-1 0 0 0 1 0 1 0 0 0 -1 0 0 0 -1 0 0 1</float_array>
<technique_common>
<accessor source="#Cube_001-mesh-normals-array" count="6" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<vertices id="Cube_001-mesh-vertices">
<input semantic="POSITION" source="#Cube_001-mesh-positions"/>
</vertices>
<polylist count="12">
<input semantic="VERTEX" source="#Cube_001-mesh-vertices" offset="0"/>
<input semantic="NORMAL" source="#Cube_001-mesh-normals" offset="1"/>
<vcount>3 3 3 3 3 3 3 3 3 3 3 3 </vcount>
<p>3 0 2 0 0 0 7 1 6 1 2 1 5 2 4 2 6 2 1 3 0 3 4 3 2 4 6 4 4 4 7 5 3 5 1 5 1 0 3 0 0 0 3 1 7 1 2 1 7 2 5 2 6 2 5 3 1 3 4 3 0 4 2 4 4 4 5 5 7 5 1 5</p>
</polylist>
</mesh>
</geometry>
</library_geometries>
<library_controllers>
<controller id="Armature_Cube-skin" name="Armature">
<skin source="#Cube_001-mesh">
<bind_shape_matrix>1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</bind_shape_matrix>
<source id="Armature_Cube-skin-joints">
<Name_array id="Armature_Cube-skin-joints-array" count="1">Bone</Name_array>
<technique_common>
<accessor source="#Armature_Cube-skin-joints-array" count="1" stride="1">
<param name="JOINT" type="name"/>
</accessor>
</technique_common>
</source>
<source id="Armature_Cube-skin-bind_poses">
<float_array id="Armature_Cube-skin-bind_poses-array" count="16">0 -1 0 0 1 0 0 0 0 0 1 0 0 0 0 1</float_array>
<technique_common>
<accessor source="#Armature_Cube-skin-bind_poses-array" count="1" stride="16">
<param name="TRANSFORM" type="float4x4"/>
</accessor>
</technique_common>
</source>
<source id="Armature_Cube-skin-weights">
<float_array id="Armature_Cube-skin-weights-array" count="4">1 1 1 1</float_array>
<technique_common>
<accessor source="#Armature_Cube-skin-weights-array" count="4" stride="1">
<param name="WEIGHT" type="float"/>
</accessor>
</technique_common>
</source>
<joints>
<input semantic="JOINT" source="#Armature_Cube-skin-joints"/>
<input semantic="INV_BIND_MATRIX" source="#Armature_Cube-skin-bind_poses"/>
</joints>
<vertex_weights count="8">
<input semantic="JOINT" source="#Armature_Cube-skin-joints" offset="0"/>
<input semantic="WEIGHT" source="#Armature_Cube-skin-weights" offset="1"/>
<vcount>0 0 0 0 1 1 1 1 </vcount>
<v>0 0 0 1 0 2 0 3</v>
</vertex_weights>
</skin>
</controller>
</library_controllers>
<library_visual_scenes>
<visual_scene id="Scene" name="Scene">
<node id="Armature" name="Armature" type="NODE">
<matrix sid="transform">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</matrix>
<node id="Bone" name="Bone" sid="Bone" type="JOINT">
<matrix sid="transform">0 1 0 0 -1 0 0 0 0 0 1 0 0 0 0 1</matrix>
</node>
</node>
<node id="Cube" name="Cube" type="NODE">
<translate sid="location">0 0 0</translate>
<rotate sid="rotationZ">0 0 1 0</rotate>
<rotate sid="rotationY">0 1 0 0</rotate>
<rotate sid="rotationX">1 0 0 0</rotate>
<scale sid="scale">1 1 1</scale>
<instance_controller url="#Armature_Cube-skin">
<skeleton>#Bone</skeleton>
</instance_controller>
</node>
</visual_scene>
</library_visual_scenes>
<scene>
<instance_visual_scene url="#Scene"/>
</scene>
</COLLADA>

View File

@@ -0,0 +1,116 @@
<?xml version="1.0" encoding="utf-8"?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
<asset>
<contributor>
<author>Blender User</author>
<authoring_tool>Blender 2.75.0 commit date:2015-07-07, commit time:14:56, hash:c27589e</authoring_tool>
</contributor>
<created>2015-09-26T23:10:24</created>
<modified>2015-09-26T23:10:24</modified>
<unit name="meter" meter="1"/>
<up_axis>Z_UP</up_axis>
</asset>
<library_images/>
<library_geometries>
<geometry id="Cube_001-mesh" name="Cube.001">
<mesh>
<source id="Cube_001-mesh-positions">
<float_array id="Cube_001-mesh-positions-array" count="48">-1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 3 -1 1 3 1 -1 3 1 1 3</float_array>
<technique_common>
<accessor source="#Cube_001-mesh-positions-array" count="16" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="Cube_001-mesh-normals">
<float_array id="Cube_001-mesh-normals-array" count="18">-1 0 0 0 1 0 1 0 0 0 -1 0 0 0 -1 0 0 1</float_array>
<technique_common>
<accessor source="#Cube_001-mesh-normals-array" count="6" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<vertices id="Cube_001-mesh-vertices">
<input semantic="POSITION" source="#Cube_001-mesh-positions"/>
</vertices>
<polylist count="28">
<input semantic="VERTEX" source="#Cube_001-mesh-vertices" offset="0"/>
<input semantic="NORMAL" source="#Cube_001-mesh-normals" offset="1"/>
<vcount>3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 </vcount>
<p>3 0 2 0 0 0 7 1 6 1 2 1 5 2 4 2 6 2 1 3 0 3 4 3 2 4 6 4 4 4 3 5 9 5 11 5 10 3 14 3 12 3 7 5 11 5 10 5 1 5 8 5 9 5 5 5 10 5 8 5 15 5 13 5 12 5 9 1 13 1 15 1 11 2 15 2 14 2 8 0 12 0 13 0 1 0 3 0 0 0 3 1 7 1 2 1 7 2 5 2 6 2 5 3 1 3 4 3 0 4 2 4 4 4 7 5 3 5 11 5 8 3 10 3 12 3 5 5 7 5 10 5 3 5 1 5 9 5 1 5 5 5 8 5 14 5 15 5 12 5 11 1 9 1 15 1 10 2 11 2 14 2 9 0 8 0 13 0</p>
</polylist>
</mesh>
</geometry>
</library_geometries>
<library_controllers>
<controller id="Armature_Cube-skin" name="Armature">
<skin source="#Cube_001-mesh">
<bind_shape_matrix>1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</bind_shape_matrix>
<source id="Armature_Cube-skin-joints">
<Name_array id="Armature_Cube-skin-joints-array" count="2">Bone_1 Bone_2</Name_array>
<technique_common>
<accessor source="#Armature_Cube-skin-joints-array" count="2" stride="1">
<param name="JOINT" type="name"/>
</accessor>
</technique_common>
</source>
<source id="Armature_Cube-skin-bind_poses">
<float_array id="Armature_Cube-skin-bind_poses-array" count="32">1 0 0 0 0 0 1 0 0 -1 0 0 0 0 0 1 1 0 0 0 0 0 1 -1.5 0 -1 0 0 0 0 0 1</float_array>
<technique_common>
<accessor source="#Armature_Cube-skin-bind_poses-array" count="2" stride="16">
<param name="TRANSFORM" type="float4x4"/>
</accessor>
</technique_common>
</source>
<source id="Armature_Cube-skin-weights">
<float_array id="Armature_Cube-skin-weights-array" count="12">1 1 1 1 1 1 1 1 1 1 1 1</float_array>
<technique_common>
<accessor source="#Armature_Cube-skin-weights-array" count="12" stride="1">
<param name="WEIGHT" type="float"/>
</accessor>
</technique_common>
</source>
<joints>
<input semantic="JOINT" source="#Armature_Cube-skin-joints"/>
<input semantic="INV_BIND_MATRIX" source="#Armature_Cube-skin-bind_poses"/>
</joints>
<vertex_weights count="16">
<input semantic="JOINT" source="#Armature_Cube-skin-joints" offset="0"/>
<input semantic="WEIGHT" source="#Armature_Cube-skin-weights" offset="1"/>
<vcount>0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 1 </vcount>
<v>0 0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 1 8 1 9 1 10 1 11</v>
</vertex_weights>
</skin>
</controller>
</library_controllers>
<library_visual_scenes>
<visual_scene id="Scene" name="Scene">
<node id="Armature" name="Armature" type="NODE">
<matrix sid="transform">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</matrix>
<node id="Bone_1" name="Bone_1" sid="Bone_1" type="JOINT">
<matrix sid="transform">1 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 1</matrix>
<node id="Bone_2" name="Bone_2" sid="Bone_2" type="JOINT">
<matrix sid="transform">1 0 0 0 0 1 0 1.5 0 0 1 0 0 0 0 1</matrix>
</node>
</node>
</node>
<node id="Cube" name="Cube" type="NODE">
<translate sid="location">0 0 0</translate>
<rotate sid="rotationZ">0 0 1 0</rotate>
<rotate sid="rotationY">0 1 0 0</rotate>
<rotate sid="rotationX">1 0 0 0</rotate>
<scale sid="scale">1 1 1</scale>
<instance_controller url="#Armature_Cube-skin">
<skeleton>#Bone_1</skeleton>
</instance_controller>
</node>
</visual_scene>
</library_visual_scenes>
<scene>
<instance_visual_scene url="#Scene"/>
</scene>
</COLLADA>

View File

@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="utf-8"?>
<COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.1">
<asset>
<contributor>
<author>Blender User</author>
<authoring_tool>Blender 2.76.0 commit date:2015-09-30, commit time:16:05, hash:fb78f6d</authoring_tool>
</contributor>
<created>2015-10-06T22:09:01</created>
<modified>2015-10-06T22:09:01</modified>
<unit name="meter" meter="1"/>
<up_axis>Z_UP</up_axis>
</asset>
<library_images/>
<library_geometries>
<geometry id="Cube_001-mesh" name="Cube.001">
<mesh>
<source id="Cube_001-mesh-positions">
<float_array id="Cube_001-mesh-positions-array" count="48">-1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 3 -1 1 3 1 -1 3 1 1 3</float_array>
<technique_common>
<accessor source="#Cube_001-mesh-positions-array" count="16" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<source id="Cube_001-mesh-normals">
<float_array id="Cube_001-mesh-normals-array" count="18">-1 0 0 0 1 0 1 0 0 0 -1 0 0 0 -1 0 0 1</float_array>
<technique_common>
<accessor source="#Cube_001-mesh-normals-array" count="6" stride="3">
<param name="X" type="float"/>
<param name="Y" type="float"/>
<param name="Z" type="float"/>
</accessor>
</technique_common>
</source>
<vertices id="Cube_001-mesh-vertices">
<input semantic="POSITION" source="#Cube_001-mesh-positions"/>
</vertices>
<polylist count="28">
<input semantic="VERTEX" source="#Cube_001-mesh-vertices" offset="0"/>
<input semantic="NORMAL" source="#Cube_001-mesh-normals" offset="1"/>
<vcount>3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 </vcount>
<p>3 0 2 0 0 0 7 1 6 1 2 1 5 2 4 2 6 2 1 3 0 3 4 3 2 4 6 4 4 4 3 5 9 5 11 5 10 3 14 3 12 3 7 5 11 5 10 5 1 5 8 5 9 5 5 5 10 5 8 5 15 5 13 5 12 5 9 1 13 1 15 1 11 2 15 2 14 2 8 0 12 0 13 0 1 0 3 0 0 0 3 1 7 1 2 1 7 2 5 2 6 2 5 3 1 3 4 3 0 4 2 4 4 4 7 5 3 5 11 5 8 3 10 3 12 3 5 5 7 5 10 5 3 5 1 5 9 5 1 5 5 5 8 5 14 5 15 5 12 5 11 1 9 1 15 1 10 2 11 2 14 2 9 0 8 0 13 0</p>
</polylist>
</mesh>
</geometry>
</library_geometries>
<library_controllers>
<controller id="Armature_Cube-skin" name="Armature">
<skin source="#Cube_001-mesh">
<bind_shape_matrix>1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</bind_shape_matrix>
<source id="Armature_Cube-skin-joints">
<Name_array id="Armature_Cube-skin-joints-array" count="3">Bone_1 Bone_2 Bone_1_001</Name_array>
<technique_common>
<accessor source="#Armature_Cube-skin-joints-array" count="3" stride="1">
<param name="JOINT" type="name"/>
</accessor>
</technique_common>
</source>
<source id="Armature_Cube-skin-bind_poses">
<float_array id="Armature_Cube-skin-bind_poses-array" count="48">1 0 0 0 0 0 1 0 0 -1 0 0 0 0 0 1 0.6923077 -0.5547002 -0.4615384 0.6923077 0.5547002 0 0.8320503 -1.248075 -0.4615384 -0.8320503 0.3076923 -0.4615384 0 0 0 1 0.6923077 0.5547002 0.4615384 -0.6923077 -0.5547002 0 0.8320503 -1.248075 0.4615384 -0.8320503 0.3076923 -0.4615384 0 0 0 1</float_array>
<technique_common>
<accessor source="#Armature_Cube-skin-bind_poses-array" count="3" stride="16">
<param name="TRANSFORM" type="float4x4"/>
</accessor>
</technique_common>
</source>
<source id="Armature_Cube-skin-weights">
<float_array id="Armature_Cube-skin-weights-array" count="8">1 1 1 1 1 1 1 1</float_array>
<technique_common>
<accessor source="#Armature_Cube-skin-weights-array" count="8" stride="1">
<param name="WEIGHT" type="float"/>
</accessor>
</technique_common>
</source>
<joints>
<input semantic="JOINT" source="#Armature_Cube-skin-joints"/>
<input semantic="INV_BIND_MATRIX" source="#Armature_Cube-skin-bind_poses"/>
</joints>
<vertex_weights count="16">
<input semantic="JOINT" source="#Armature_Cube-skin-joints" offset="0"/>
<input semantic="WEIGHT" source="#Armature_Cube-skin-weights" offset="1"/>
<vcount>1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 1 </vcount>
<v>0 0 0 1 0 2 0 3 2 4 2 5 1 6 1 7</v>
</vertex_weights>
</skin>
</controller>
</library_controllers>
<library_visual_scenes>
<visual_scene id="Scene" name="Scene">
<node id="Armature" name="Armature" type="NODE">
<matrix sid="transform">1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1</matrix>
<node id="Bone_1" name="Bone_1" sid="Bone_1" type="JOINT">
<matrix sid="transform">1 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 1</matrix>
<node id="Bone_2" name="Bone_2" sid="Bone_2" type="JOINT">
<matrix sid="transform">0.6923077 0.5547002 -0.4615384 0 -0.4615385 0.8320503 0.3076923 1.5 0.5547001 0 0.8320503 0 0 0 0 1</matrix>
</node>
<node id="Bone_1_001" name="Bone_1.001" sid="Bone_1_001" type="JOINT">
<matrix sid="transform">0.6923077 -0.5547002 0.4615384 0 0.4615385 0.8320503 0.3076923 1.5 -0.5547001 0 0.8320503 0 0 0 0 1</matrix>
</node>
</node>
</node>
<node id="Cube" name="Cube" type="NODE">
<translate sid="location">0 0 0</translate>
<rotate sid="rotationZ">0 0 1 0</rotate>
<rotate sid="rotationY">0 1 0 0</rotate>
<rotate sid="rotationX">1 0 0 0</rotate>
<scale sid="scale">1 1 1</scale>
<instance_controller url="#Armature_Cube-skin">
<skeleton>#Bone_1</skeleton>
</instance_controller>
</node>
</visual_scene>
</library_visual_scenes>
<scene>
<instance_visual_scene url="#Scene"/>
</scene>
</COLLADA>

View File

@@ -0,0 +1,17 @@
with
"gel",
"lace_shared";
project box_rig_1_bone_Demo
is
for Object_Dir use "build";
for Exec_Dir use ".";
for Main use ("launch_box_rig_1_bone_demo.adb");
for Languages use ("Ada");
package Ide renames Lace_shared.Ide;
package Builder renames Lace_shared.Builder;
package Compiler renames Lace_shared.Compiler;
package Binder renames Lace_shared.Binder;
end box_rig_1_bone_Demo;

View File

@@ -0,0 +1,80 @@
Custom Human Rigs
~~~~~~~~~~~~~~~~~
Dependencies:
- makeHuman v1.02+
- Blender v2.76+
- Blender MoCap Addons (for animations)
- Blender MakeHuman imports Addon
Workflow:
Creating a basic, default human:
1) ~ makeHuman
- Start makeHuman.
- Go to Geometries/Eyes panel, select 'None'.
- Go to Pose/Animate panel, select 'game.json'.
- Go to Files/Export panel, set 'Mesh Format' to 'Blender exchange',
turn off 'Feet on Ground' option,
set 'Scale Units' to 'meter',
set 'Filename' field to 'human',
click the 'Export' button (next to the Filename field).
- Close makeHuman.
2.0) ~ Blender
2.1)
- Start blender.
- Press 'a' 'a' 'Delete' keys, then confirm that all should be deleted.
- In the 'File' menu, select 'Import' and then select 'MakeHuman' in the subMenu.
- This will bring up a dialog which asks for the location of the 'MakeHuman/Blender Export' file we have formerly created with the makeHuman app.
- By default, this file is usually located at ~/makehuman/v1/exports/human.mhx
- Once the file has been imported into Blender, we should see the skin and bones of the model (zoom in via mouse wheel for better view).
2.2)
- In the 'File' menu, select 'Export' and then select 'Collada' in the subMenu.
- Set 'Filename' field to 'human.dae'.
- Click the 'Export Collada' button (next to the Filename field).
3) ~ Lace/MMI
- The generated Collada .dae file can now be imported as an MMI Rig (whose motion is controlled by phsyical forces ... ie gravity, etc).
Creating a basic, default animated human:
1) As above.
2.0) ~ Blender
2.1)
- As above.
2.2)
- In the 'File' menu, select 'Import' and then select 'Motion Capture' in the subMenu.
- Navigate to the folder which contains the desired motion capture file, select it and click the 'Import BVH' button.
- In the 'Poperties' panel, select the 'Object' icon (a little orange cube).
- Use the mouse wheel to zoom out, until you see the imported BVH rig, and then select it with right mouse button.
- Use the mouse wheel to zoom in, until you see the the original human model, and then add it to the selection set with <shift> right mouse button.
- You should see in the 'Properties' panel (under the MoCap tools) a means of mapping from the imported 'MoCap BVH' rig bones to our 'makeHuman rig' bones.
- Before we do the bone mapping, we must click the MoCap tools 'AutoScale' button. This scales the 'MoCap BVH' rig to match the scale of our makeHuman model.
- Now we do the bone mapping:
- Click the 'Guess Hierachy Mapping' button in 'MoCap Tools' panel. This will attempt to do as much of the mapping as it can 'guess' (based on bone name similarity).
- Go thru each remaining 'unguessed' BVH bone and assign the equivalent bone in the makeHuman rig. If there is no matching bone, ignore it.
- Mark any 'feet' bones by clicking on the 'little man with one foot on ground' icon. This allows the Retarget to prevent 'skating'.
- When bone mapping between BVH rig and makeHuman rig is done, click the 'Save Mapping' button and then save the blender file (for future use).
- Click the 'Advanced Retargetting' checkbox and then click the 'RETARGET' button ... this might take some time 5..20 mins depending on your cpu speed.
- Now we get rid of the BVH rig, as it's animation info has been placed into the Human rig.
- Select the BVH rig (in Blenders Object mode) and press 'Delete'.
2.3)
- In the 'File' menu, select 'Export' and then select 'Collada' in the subMenu.
- Set 'Filename' field to 'animated_human.dae'.
- Click the 'Export Collada' button (next to the Filename field).
3) ~ Lace/MMI
- The generated Collada .dae file can now be imported as an MMI Rig with ability to animate as per BVH motions, as well as via normal physics.

Some files were not shown because too many files have changed in this diff Show More