Add initial prototype.
22
4-high/gel/applet/demo/distributed/dsa/builder
Executable 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
|
||||
26
4-high/gel/applet/demo/distributed/dsa/demo_dsa.gpr
Normal 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;
|
||||
13
4-high/gel/applet/demo/distributed/dsa/launch_client.adb
Normal 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;
|
||||
|
||||
13
4-high/gel/applet/demo/distributed/dsa/launch_server.adb
Normal 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;
|
||||
|
||||
53
4-high/gel/applet/demo/distributed/dsa/simple_dsa.cfg
Normal 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;
|
||||
@@ -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=
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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=
|
||||
22
4-high/gel/applet/demo/distributed/fused/gel_fused.gpr
Normal 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;
|
||||
@@ -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;
|
||||
21
4-high/gel/applet/demo/distributed/gel_demo.gpr
Normal 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;
|
||||
72
4-high/gel/applet/demo/distributed/gel_demo_client.adb
Normal 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;
|
||||
12
4-high/gel/applet/demo/distributed/gel_demo_client.ads
Normal file
@@ -0,0 +1,12 @@
|
||||
package gel_demo_Client
|
||||
--
|
||||
-- Provides a client.
|
||||
--
|
||||
is
|
||||
|
||||
task Item
|
||||
is
|
||||
entry start;
|
||||
end Item;
|
||||
|
||||
end gel_demo_Client;
|
||||
109
4-high/gel/applet/demo/distributed/gel_demo_server.adb
Normal 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;
|
||||
18
4-high/gel/applet/demo/distributed/gel_demo_server.ads
Normal 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;
|
||||
14
4-high/gel/applet/demo/distributed/gel_demo_services.adb
Normal 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;
|
||||
14
4-high/gel/applet/demo/distributed/gel_demo_services.ads
Normal 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;
|
||||
16
4-high/gel/applet/demo/full/alire.toml
Normal 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"
|
||||
BIN
4-high/gel/applet/demo/full/assets/gel/Face1.bmp
Normal file
|
After Width: | Height: | Size: 5.1 KiB |
75
4-high/gel/applet/demo/full/assets/gel/button.obj
Normal 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
|
||||
@@ -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>
|
||||
|
||||
BIN
4-high/gel/applet/demo/full/assets/gel/golf_green-16x16.tga
Normal file
BIN
4-high/gel/applet/demo/full/assets/gel/golf_green-texture.bmp
Normal file
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 84 KiB |
|
After Width: | Height: | Size: 105 KiB |
|
After Width: | Height: | Size: 105 KiB |
BIN
4-high/gel/applet/demo/full/assets/gel/kidwelly-terrain.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
4-high/gel/applet/demo/full/assets/gel/kidwelly_128x128.tga
Normal file
BIN
4-high/gel/applet/demo/full/assets/gel/kidwelly_255x255.tga
Normal file
148
4-high/gel/applet/demo/full/assets/gel/model/box.dae
Normal 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>
|
||||
BIN
4-high/gel/applet/demo/full/assets/gel/model/unit_capsule.blend
Normal file
774
4-high/gel/applet/demo/full/assets/gel/model/unit_capsule.obj
Normal 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
|
||||
BIN
4-high/gel/applet/demo/full/assets/gel/model/unit_cone.blend
Normal file
132
4-high/gel/applet/demo/full/assets/gel/model/unit_cone.obj
Normal 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
|
||||
BIN
4-high/gel/applet/demo/full/assets/gel/model/unit_cylinder.blend
Normal file
200
4-high/gel/applet/demo/full/assets/gel/model/unit_cylinder.obj
Normal 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
|
||||
|
After Width: | Height: | Size: 3.4 KiB |
|
After Width: | Height: | Size: 3.4 KiB |
BIN
4-high/gel/applet/demo/full/assets/gel/texture/earth_map.bmp
Normal file
|
After Width: | Height: | Size: 513 KiB |
103
4-high/gel/applet/demo/full/assets/opengl/model/deer.dae
Normal file
6265
4-high/gel/applet/demo/full/assets/opengl/model/lowpolydeer/deer.obj
Normal file
@@ -0,0 +1,12 @@
|
||||
#version 140
|
||||
|
||||
|
||||
in vec4 frag_Color;
|
||||
out vec4 final_Color;
|
||||
|
||||
|
||||
void
|
||||
main()
|
||||
{
|
||||
final_Color = frag_Color;
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
@@ -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]);
|
||||
}
|
||||
}
|
||||
@@ -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.
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
After Width: | Height: | Size: 105 KiB |
|
After Width: | Height: | Size: 34 KiB |
BIN
4-high/gel/applet/demo/full/assets/opengl/texture/Face1.bmp
Normal file
|
After Width: | Height: | Size: 5.1 KiB |
|
After Width: | Height: | Size: 49 KiB |
18
4-high/gel/applet/demo/full/full_demo.gpr
Normal 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;
|
||||
304
4-high/gel/applet/demo/full/launch_full_demo.adb
Normal 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;
|
||||
75
4-high/gel/applet/demo/game/box2d_test/box2d_HelloWorld.cpp
Normal 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;
|
||||
}
|
||||
31
4-high/gel/applet/demo/game/box2d_test/gel_box2d_test.gpr
Normal 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;
|
||||
303
4-high/gel/applet/demo/game/pong/launch_pong.adb
Normal 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;
|
||||
17
4-high/gel/applet/demo/game/pong/pong.gpr
Normal 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;
|
||||
21
4-high/gel/applet/demo/hello_gel/hello_sdl_gel.gpr
Normal 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;
|
||||
35
4-high/gel/applet/demo/hello_gel/launch_hello_gel.adb
Normal 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;
|
||||
@@ -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
|
||||
4713
4-high/gel/applet/demo/models/opengl_model/assets/oolite_cobra3.obj
Normal 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;
|
||||
17
4-high/gel/applet/demo/models/opengl_model/opengl_model.gpr
Normal 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;
|
||||
@@ -0,0 +1,8 @@
|
||||
procedure launch_mouse_Motion
|
||||
--
|
||||
-- Todo
|
||||
--
|
||||
is
|
||||
begin
|
||||
null;
|
||||
end launch_mouse_Motion;
|
||||
16
4-high/gel/applet/demo/mouse/mouse_motion/mouse_motion.gpr
Normal 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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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;
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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;
|
||||
@@ -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.
|
||||
|
||||
|
||||